下面是我学习使用 realloc()
的方式:
int *a = malloc(10);
a = realloc(a, 100); // Why do we do "a = .... ?"
if(a == NULL)
//Deal with problem.....
这是否有些冗余?我能不能只这样做呢?:
if(realloc(a, 100) == NULL) //Deal with the problem
同样适用于我在其它realloc示例中找到的例子,例如:
int *oldPtr = malloc(10);
int * newPtr = realloc(oldPtr, 100);
if(newPtr == NULL) //deal with problems
else oldPtr = newPtr;
我能不能这样做呢?:
int *oldPtr = malloc(10);
if(realloc(oldPtr, 100) == NULL) //deal with problems
//else not necessary, oldPtr has already been reallocated and has now 100 elements
realloc
可能会返回一个不同的指针并使旧指针无效。请参考man realloc
。 - Ry-realloc(...., 0)
的返回值不一定是内存不足。realloc(...., more_than_zero)
在内存不足时返回NULL
,并且在realloc(...., 0)
上也可能/可能不会返回非内存不足的NULL
。 - chux - Reinstate Monica