我为此目的使用了 realloc 函数,但它肯定不会返回与我的第一个分配位置相同的内存地址。
void *vp1 = realloc(vp, 1);
我希望 vp1 始终等于 vp。
编辑:
我实际上是在尝试使用第一个字节标记我销毁的对象,并释放剩余的内存。
最佳答案
不,C 标准不提供这样的保证。
引用 C11
,第 7.22.3.5 章(强调我的)
The
realloc
function returns a pointer to the new object (which may have the same value as a pointer to the old object), or a null pointer if the new object could not be allocated.
它提到,新返回的指针“可能”指向旧位置(根据请求调整内存边界大小),但不能保证。
关于c++ - 我想释放 4 字节分配数据的最后 3 个字节(数据不是数组,它是一个整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47534780/