CVI报错问题,
先是定义了一个给二维数组动态分配内存的函数:int **malloc2(int row, int col, int size)
{
int **arr;
arr = (int **) malloc(sizeof(int*) * row + size * row * col);
if (arr != NULL)
{
int *head,count;
head = (int*) arr + sizeof(int *) * row;
memset(arr, 0, sizeof(int *) * row + size * row * col);
//while (row--)
// arr = head + size * row * col;
for(count = 0; count < row ; count++)
{
arr = head + size*count*col;
}
}
return arr;
}
调用:moban=(int**)malloc2(1024, 1024, sizeof(int));
在运行是出现的错误:
NON-FATAL RUN-TIME ERROR: Out-of-bounds pointer arithmetic: 12289 bytes (3073 elements) past end of array.
自己弄了两天了也没解决问题,希望各位高手帮帮我啊,感激涕零! 兄弟将分配的内存调大点,应该是溢出了导致的!
回复 2# cpubbs 的帖子
我也觉得可能是溢出导致的,可是这个函数本身就是给二维数组分配内存的,arr = (int **) malloc(sizeof(int*) * row + size * row * col); 分配了4*1024*1024的空间,不会溢出啊!报错是在 arr = head + size*count*col;这一行,count执行到256就停止了,接着就报错。
回复 1# 阿呆 的帖子
应该是跟数据益处有关,前段时间我也遇到同样的错误,后来把数组调大后就没有了. 单步运行查查看是哪个地方,然后对应着调,这样才好查出来!
页:
[1]