c++内存示例004realloc,释放,对齐分配

Posted 周三石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++内存示例004realloc,释放,对齐分配相关的知识,希望对你有一定的参考价值。

#包含 <c标io>
#包含 <c标准库>

()
{
* p1 = 静转<*>(分配(10*的大小 *p1));
打印格式("默认-对齐 地址: %p\n", 静转<*>(p1));
释放(p1);

* p2 = 静转<*>(::对齐分配(1024, 10*的大小 *p2));
打印格式("1024-字节 对齐 地址: %p\n", 静转<*>(p2));
释放(p2);
}
默认-对齐 地址:   0x2221c20
1024-字节 对齐 地址: 0x2222400
#包含 <c标准库>

()
{
* p1 = (*)分配(10*的大小 *p1);
::释放(p1); // 每个分配的指针都必须释放

* p2 = (*)清零分配(10, 的大小 *p2);
* p3 = (*)再分配(p2, 1000*的大小 *p3);
(p3) // p3 非空表示 p2 为 再分配 所释放
::释放(p3);
// p3 空表示 p2 未被释放
::释放(p2);
}

#包含 <c标准库>
#包含 <新>
#包含 <c断定>

分配动态缓冲
{
* p;
:
分配动态缓冲(大小型 初始 = 0) : p(空针) {
调整(初始);
}
~分配动态缓冲() { 释放(p); }
调整(大小型 新大小) {
(新大小 == 0) { // 此检查并非严格需要,但零大小 再分配 于 C 中弃用
释放(p);
p = 空针;
} {
(* 内存 =::再分配(p, 新大小))
p = 静转<*>(内存);

坏分配();
}
}
& 符号[](大小型 n) { p[n]; }
符号[](大小型 n) { p[n]; }
};

()
{
分配动态缓冲 缓冲1(1024);
缓冲1[5] = 'f';
缓冲1.调整(10); // 收缩
断定(缓冲1[5] == 'f');
缓冲1.调整(1024); // 增长
断定(缓冲1[5] == 'f');
}


以上是关于c++内存示例004realloc,释放,对齐分配的主要内容,如果未能解决你的问题,请参考以下文章

我们可以使用 realloc 来释放动态分配的内存吗?

找出分配的内存是不是被 C 中的 realloc() 函数释放

内存动态分配之realloc(),malloc(),calloc()与new运算符

c++内存示例002分配器,假定对齐,对齐分配

堆的分配和释放(malloc,free,calloc,realloc)

c++内存示例001对齐,坏弱针