c++ - 我想释放 4 字节分配数据的最后 3 个字节(数据不是数组,它是一个整数)

标签 c++ c realloc

我为此目的使用了 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/

相关文章:

c++ - 为什么从void指针*强制转换的数组无法迭代for循环?

c - 从文件更新数组,在 C 中进行验证

c - 为什么 s1 读取的是空字符?

memset 之后的 C++ 放置新

c++ - 二进制链接与 gold 链接器运行得更快吗?

c++ - 混合 C++ 和 Fortran 代码的问题

c++ - 链接器如何决定代码执行将从哪里开始? [嵌入式]

c - 使用 realloc 的程序在 Valgrind 中表现不同

c - 在C中重新分配内存

c - 双重重新分配错误...?