【发布时间】:2013-12-09 13:19:38
【问题描述】:
我想知道为什么我无法在 while 循环中仅将数组大小增加一个。 这是我的代码:
void pb_memory(void){
printf("ERROR : memory problem !\n");
system("PAUSE");
exit(EXIT_FAILURE);
}
int main(int argc, char *argv[])
{
int length = 0;
/*allocate memory and check for no error*/
int *array = calloc(1, sizeof(int)); /*initialize to 0*/
if(array == NULL)
pb_memory();
/*Check for valid inputs and put into array*/
while((scanf("%d", &num)) != EOF){
array[length]=num;
length++;
array = realloc(array, length*sizeof(int));
if(array == NULL)
pb_memory();
}
.
.
.
.
}
为什么这不起作用?它失败并直接进入 pb_memory() 函数。我希望每次长度增加一我的数组也这样做......
感谢您的帮助。
编辑:对不起,我想让代码保持简单并专注于我的问题,这就是我没有编写所有变量的原因。无论如何,我正在学习下一次,并感谢@Michael 和所有参与的人。
【问题讨论】:
-
如何知道初始分配成功?为什么是
int *(array)而不是int *array? -
尝试声明和初始化
length。 -
贴出真实代码(因为这不会编译)
-
我声明长度 = 0;在我的代码中忘记写回它并且 *(array) 或 *array 不是我认为的问题
-
@Dovakin940,他的意思是这样的sscce.org
标签: c arrays memory-management realloc