在C语言中为数组动态分配内存
我将内存分配给了一个数组(使用在C语言中为数组动态分配内存,c,arrays,malloc,C,Arrays,Malloc,我将内存分配给了一个数组(使用malloc),但是如果它需要更多的空间,那么以后在程序中是否可以扩展该数组呢?或者创建一个新数组,让第一个数组中的最后一个元素指向新数组? 我知道realloc会更容易使用,但我只尝试使用malloc是的,您可以使用realloc()。不过,在将返回值分配给原始指针之前,请小心检查返回值。请参见此处:是的,您可以使用realloc()。不过,在将返回值分配给原始指针之前,请小心检查返回值。请参见此处:一般算法为 allocate array of 100 whil
malloc
),但是如果它需要更多的空间,那么以后在程序中是否可以扩展该数组呢?或者创建一个新数组,让第一个数组中的最后一个元素指向新数组?我知道
realloc
会更容易使用,但我只尝试使用malloc
是的,您可以使用realloc()
。不过,在将返回值分配给原始指针之前,请小心检查返回值。请参见此处:是的,您可以使用realloc()
。不过,在将返回值分配给原始指针之前,请小心检查返回值。请参见此处:一般算法为
allocate array of 100
while more input
if no-room-in-array
allocate another array 100 bigger than the current array
copy values from current array into newly created array
free(current array)
current array = newly created array (the one you copied into)
// now there will be room, so
put input in array
一般算法是
allocate array of 100
while more input
if no-room-in-array
allocate another array 100 bigger than the current array
copy values from current array into newly created array
free(current array)
current array = newly created array (the one you copied into)
// now there will be room, so
put input in array
传递给
malloc()
的大小错误
代码应该传递n*sizeof(int)
,而不是传递n
字节
其他想法包括
1) 不用投
int *array1 = (int *) malloc(...;
int *array1 = malloc(...);
2) 使用memcpy()简化
7) 检查是否存在malloc()
故障
int *newArray = malloc(newsize);
if (newArray == NULL && newsize > 0) Handle_Failure();
传递给malloc()
的大小错误
代码应该传递n*sizeof(int)
,而不是传递n
字节
其他想法包括
1) 不用投
int *array1 = (int *) malloc(...;
int *array1 = malloc(...);
2) 使用memcpy()简化
7) 检查是否存在malloc()
故障
int *newArray = malloc(newsize);
if (newArray == NULL && newsize > 0) Handle_Failure();
要更改大小,请查看realloc,我尝试在不使用realloc的情况下执行此操作。请查看memcpy的手册页,而不是复制for循环中的元素。但是,是的,这是正确的想法。我对您正在使用malloc的行newArray=newArray(array1)
感到困惑,所以我不确定这意味着什么。因此,不要强制转换malloc返回的void指针。如果您绝对必须这样做,那么请确保您#include
来更改reallolic的大小。我正在尝试在不使用realloc的情况下仅查看memcpy的手册页,而不是复制for循环中的元素。但是,是的,这是正确的想法。我对您正在使用malloc的行newArray=newArray(array1)
感到困惑,所以我不确定这意味着什么。因此,不要强制转换malloc返回的void指针。如果你绝对必须这样做,那么请确保你像我说的那样包括我不能使用的realloc@user2737810:您在哪个平台上不能使用realloc()?程序规范不允许使用realloc,就像我说的我不能使用realloc@user2737810:您在哪个平台上不能使用realloc()?程序规格不允许更改您的问题。如果您需要添加某些内容,请添加它。不,不需要,我对当前数组=新创建的数组(您复制到的数组)的实现是错误的。我不确定你为什么不改变你的问题。如果您需要添加某些内容,请添加它。不,不需要,我对当前数组=新创建的数组(您复制到的数组)的实现是错误的。不太清楚为什么