Alp*_*der 1 c pointers realloc
注意,这个问题不是询问realloc()原始块中的指针是否无效,而是它是否使所有其他指针无效.
我realloc()对它的性质有点困惑,特别是如果它移动任何其他记忆.
例如:
void* ptr1 = malloc(2);
void* ptr2 = malloc(2);
....
ptr1 = realloc(ptr1, 3);
Run Code Online (Sandbox Code Playgroud)
在此之后,我可以保证ptr2在realloc()呼叫之前指向相同的数据吗?
是的,ptr2不受影响realloc(),它与realloc()呼叫无关(根据当前代码).
然而,FWIW,按照该手册页的realloc(),(重点煤矿)
realloc()函数返回一个指向新分配的内存的指针,该内存适用于任何类型的变量,可能与ptr不同,
ptr1 可能会改变.
那说,
ptr1 = realloc(ptr1, 3);
Run Code Online (Sandbox Code Playgroud)
风格很危险.如果realloc()失败,
如果请求失败,realloc()函数返回....或NULL
和
如果
realloc()失败,则原始块保持不变; 它没有被释放或移动.
但是,根据您的陈述,在失败的情况下,NULL返回将覆盖实际内存,丢失实际内存并造成内存泄漏.
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |