我正在計算從一個向量中添加一些值並將它們保存在一個新的向量中。我正在做for循環。在開始的代碼工作正常,但後來我開始越來越acces違規錯誤。從我讀的內容來看,當嘗試使用一個未初始化的指針時,你通常會得到這個錯誤。但是我使用的指針已經單元化了。我很抱歉這個草率的代碼,因爲我還在學習。任何暗示什麼可能導致錯誤將非常感謝。未處理的異常訪問C++中的循環衝突
下面是代碼:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <ctime>
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
void MulCPU(int *c, const int *a, const int NDim, const int templateSize){
for (int i = 0; i < NDim; i++){
for (int k = 0; k < NDim; k++){
c[i - 1 + (k - 1)*NDim] = a[i + templateSize - 1 + (k)*NDim + k*(templateSize - 1)] - a[i - 1 + (k)*NDim + k*(templateSize - 1)] - a[i + templateSize - 2 + (k - 2)*NDim] + a[i - 2 + (k - 2)*NDim];
}
}
}
int main()
{
srand(time(NULL));
int N = 500;
int SIZE = N*N;
int *h_b = new int[SIZE];
int *h_e = new int[SIZE];
int templateSize = 3;
// ...
// Code for defining h_b
// ...
int StartTime = clock();
MulCPU(h_e, h_b, N, templateSize);
int StopTime = clock();
delete[] h_a, h_b, h_c, h_d, h_e;
我想這一定是某種方式食堂的事情了循環。早期我遇到了堆異常...
調試器給我: SecondTest.exe中0x011B996B未處理的異常:0xC0000005:訪問衝突讀取地址0x0199C0A4。
你的調試器告訴你什麼? –
你觀察調試你的代碼是什麼。 –
對不起,忘了發佈實際問題:在SecondTest.exe 0x011B996B未處理的異常:0xC0000005:訪問衝突讀取位置0x0199C0A4。 – LukaK