C++内存管理
来源:互联网 发布:数据共享交换平台 编辑:程序博客网 时间:2024/06/01 09:05
A、delete只可以释放由new动态申请的堆区的空间,不可以释放在栈区的空间,
是的
B、而析构函数只会自动释放系统自己管理的栈区的空间,不会释放由new分配的空间
是的
B、而析构函数只会自动释放系统自己管理的栈区的空间,不会释放由new分配的空间
析构函数只负责销毁对象,不负责栈空间的管理
栈里面是自动变量,不用主动销毁。
char *p = new char[5];
指针本身是在栈区的啊
指针所指的内存是在堆区的
对于A这句话:
char *p = new char[5];//变量p存放在栈空间, 它指向(new)的空间在堆内存中,
delete p;//调用delete p释放它指向的内存空间, 那变量p自己呢? 谁来删除?
================
p这个指针本身是栈上申请的。但是它指向的内容是堆上申请的。
栈上自动释放,堆上需要手动释放。
1、析构函数可以自己手动去调用吗??
可以但不推荐
A、delete只可以释放由new动态申请的堆区的空间,不可以释放在栈区的空间
正确
B、而析构函数只会自动释放系统自己管理的栈区的空间,不会释放由new分配的空间
不完全正确,一般在析构函数里面释放在构造函数里分配的堆空间
至于“不会释放由new分配的空间”——delete对象相当于析构+free
char *p = new char[5];
p在函数返回的时候释放
Point p1(10,20)
如果p1是全局变量,就在程序退出的时候释放,否则分配在栈里面,同样也是函数返回的时候释放
0 0
- C/C++ 内存管理
- C内存管理函数
- C内存管理
- C内存管理
- object c 内存管理
- C 内存管理详解
- C 内存管理
- C语言内存管理
- c/c++内存管理
- c 的内存管理
- C内存管理
- Ojbective-c 内存管理
- C内存管理
- objective-c内存管理
- Objective-c 内存管理
- Objective-C内存管理~~
- c,c++内存管理
- Objective-C内存管理
- SIFT算法详解
- 软考-计算机组成原理、体系机构与网络安全
- hdu 2150 Pipe
- 需要阅读的经典管理书籍
- 经典排序之堆排序
- C++内存管理
- poj1269-Intersecting Lines(求线段交点)
- 树状数组专题
- Delphi 通过IConnectionPointContainer响应COM事件的例子,Internet Explorer 事件响应
- 程序运行过程中的各个寄存器!
- Eclipse 中 显示代码的行号
- 最新的Android SDK安装攻略(动作要快,来晚就失效了)
- 武道释义 · 零散
- C语言 stringcpy,stringcat,stringcmp实现