gpt4 book ai didi

c - 在动态数组中存储值

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:18 28 4
gpt4 key购买 nike

我想从键盘(或文件:./a.out < file)获取数字并将它们存储在数组中。这个想法是数组的长度是未知的。

#include <stdio.h>
#include <stdlib.h>

int* newElem(){
int* elm= malloc(sizeof(int));
if (elm == NULL) {
printf("\nError: memory allocation failed.\n");
exit(-1);
}
return elm;
}


int main(){
int *array,x,size,i=0;

while( scanf("%d",&x)==1 ){

array= newElem();
array[i]=x;
i++;

}

size=i;
free(array);
printf("size=%d",size);


return(0);
}

为什么我输入后会崩溃:1 2 3 4 5 6 7 8

最佳答案

在你的代码中

array= newElem();

每次都会覆盖现有的指针(内存)。因此,array[i] 变为无效,这本质上是越界访问,进而调用 undefined behavior .您需要使用 realloc()重新调整分配的内存大小。

关于c - 在动态数组中存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32811277/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com