0
我有以下代码,代码编译并运行,如果我没有尝试打印我生成的数组,但segfault第二次尝试打印数组。我很困惑什么是错的?我在mac上使用基本的valgrind工具,告诉我我试图访问未映射的内存区域。如果我尝试使用printf(“%f \ n”,data [i]),则会发生此问题;数组打印段错误
#define matA_W 1024
#define matA_H 1024
void genMatrix(float* data, int size)
{
for (int i = 0; i < size; ++i) {
data[i] = float (rand() /RAND_MAX);
}
for (int i = 0; i < size; ++i) {
std::cout << data[i] << std::endl;
}
}
int main() {
srand(2006)
unsigned int size_A = matA_W * matA_H;
unsigned int memA = sizeof(float) * size_A;
float* matA = (float*) malloc(memA);
std::cout << size_A << std::endl;
std::cout << memA << std::endl;
genMatrix(matA,size_A);
return 0;
}
开始学习贸易的正确的工具,所以你可以调试这个自己:我目前使用Valgrind的和Valgrind的,峨山,灿... – 2014-09-06 17:55:18
能pin将错误指向一个超出范围的数组访问,我只是不明白为什么! – user1018513 2014-09-06 18:00:10
顺便说一下,改成'data [i] =(float)rand()/ RAND_MAX;','srand(2006);' – BLUEPIXY 2014-09-06 18:16:38