我对malloc完全不熟悉,我必须为project.i读取。在malloc的描述中读取你必须为空结束字节指定+1大小。但我不明白在哪里? ? 下面是我的代码块....
array = malloc(row*sizeof(int**));
for(i=0;i<row;i++)
{
array[i] = malloc(column*sizeof(int*));
if(array[i]==NULL)
{
printf("out of space");
return 1;
}
for(j=0;j<column;j++)
{
array[i][j] = malloc(3*sizeof(int));
if(array[i][j]==NULL)
{
printf("out of space");
return 1;
}
}
然后我想要访问使用 数组[1] [1] [1] ......等等......
如果我用到列来分配一些值..然后在下一个如果有两个fopen语句我得到以下错误... 我需要fopen语句来读取两个文件......
testImage: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted
但是,如果我将值分配给第1列,那么错误就不存在.....
请在这帮帮我.....
编辑细节: 这个错误我只能进入ubuntu如果我在unix中运行它我没有得到这个错误.... 对不起,我会在9个小时内上传完整的代码...(我现在没有和我在一起...抱歉)...
是的,我知道3D阵列的仿真效果不佳,但我只需要它...... 让我为你定义一些步骤...... 首先,我用上面的代码定义数组。 然后我为数组的每个元素赋值...所以我可以稍后操作它...这里如果我使用for循环为每个元素赋值,如果我包含元素 array [row] [column] [1] = 23; 然后,如果我使用fopen打开两个文件然后生成上面的错误..但如果我只使用fopen打开一个文件,那么没有问题....