c++: 获取delete[]中的数组大小
来源:互联网 发布:恒久办公软件用法 编辑:程序博客网 时间:2024/05/04 20:54
看一个小例子:
1
#include <iostream>
2
3
using
namespace
std;
4
5
class
A {
6
public
:
7
A() { cout <<
"A::A()"
<< endl; }
8
~A() { cout <<
"A::~A()"
<< endl; }
9
};
10
11
int
main() {
12
A* a =
new
A[5];
13
delete
[] a;
14
15
return
0;
16
}
编译执行输出:
A::A()A::A()A::A()A::A()A::A()A::~A()A::~A()A::~A()A::~A()A::~A()
上面的输出显示程序正确释放了5个A对象。
现在的问题是:我们在delete[] a语句中并没有给出对象数组的大小,那么系统是如何做到正确释放对象个数的呢?
接着看下面的程序段:
1
#include <iostream>
2
3
using
namespace
std;
4
5
class
A {
6
public
:
7
A() { cout <<
"A::A()"
<< endl; }
8
~A() { cout <<
"A::~A()"
<< endl; }
9
};
10
11
int
main() {
12
A* a =
new
A[5];
13
14
int
addr = (
int
)a - 4;
15
cout <<
"delete[] size = "
<< *(
int
*)addr << endl;
16
17
delete
[] a;
18
19
return
0;
20
}
编译执行:
A::A()A::A()A::A()A::A()A::A()delete[] size = 5A::~A()A::~A()A::~A()A::~A()A::~A()
结论:
系统在new一个数组对象的时候会把数组大小存放在返回的内存地址的前4个字节中。
FROM; http://www.cnblogs.com/lidabo/p/3701097.html
0 0
- c++: 获取delete[]中的数组大小
- C语言二维数组的大小的获取
- C++获取数组大小
- thinkphp获取数组大小
- Lua获取数组大小
- C获取稳健大小
- 关于利用数组名获取数组大小的一点误区 - [C&CPP]
- reinterpret_cast的使用和delete[] 如何知道数组的大小
- C++ delete[] 是如何知道数组大小的?
- 【探讨】C++ delete[] 是如何知道数组大小的
- c语言,求数组大小
- C#Winform获取屏幕大小
- c语言下如果动态获取指针型数组存放数量大小
- 【C语言】数组--动态分配数组大小
- 获取数组中的最大值
- 获取数组中的最大值
- C获取数组长度
- perl获取数据库查询返回数组大小
- ANDROID 获得地理位置
- MapReduce 中的两表 join 几种方案简介
- ADB无线调试
- Windows Server 2012 ftp的搭建
- Qt简单网络运用获得本机IP
- c++: 获取delete[]中的数组大小
- Hadoop/HBase下架节点
- win7 64位下安装oracle 10g(10.2.1)切身体会,不需要安装oracle客户端,实现navicat和plsql连接数据库
- 简单计时器代码的实现
- Android listview下拉刷新,上拉加载(发现一个比较好用的,和大家分享下)
- Dll注入技术之ComRes注入
- js正则表达式中的问号几种用法小结
- 找工作
- react-router