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,释放,对齐分配的主要内容,如果未能解决你的问题,请参考以下文章
找出分配的内存是不是被 C 中的 realloc() 函数释放
内存动态分配之realloc(),malloc(),calloc()与new运算符