C++中有三种创建对象 内存分配问题
来源:互联网 发布:安卓去视频广告软件 编辑:程序博客网 时间:2024/06/06 17:14
我们都知道C++中有三种创建对象的方法,如下:
#include <iostream>using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配 A b = A(1); //栈中分配 A* c = new A(1); //堆中分配 delete c; return 0;}
第一种和第二种没什么区别,一个隐式调用,一个显式调用,两者都是在进程虚拟地址空间中的栈中分配内存,而第三种使用了new,在堆中分配了内存,而栈中内存的分配和释放是由系统管理,而堆中内存的分配和释放必须由程序员手动释放,所以这就产生一个问题是把对象放在栈中还是放在堆中的问题,
基本数据类型的对象没有析构函数,所以回收基本类型组成的数组空间用 delete 和 delete[] 都是应该可以的;但是对于类对象数组,只能用 delete[]。对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。
0 0
- C++中有三种创建对象 内存分配问题
- java中创建对象分配内存的问题
- 对象创建、内存分配、访问
- C内存分配问题
- C++对象内存分配问题
- c++对象内存分配问题
- C++对象内存分配问题
- C++内存对象分配问题
- C++对象内存分配问题
- 浅谈对象内存分配问题
- C的内存分配问题
- 一个C内存分配问题
- 一个C内存分配问题
- c的内存分配问题
- C语言内存分配问题
- C/C++内存分配问题
- C语言内存分配问题
- C语言内存分配问题
- 第五章:引用类型
- 【leetcode】3Sum
- MySQL常用语句一、连接MySQL格式:mysql-h主机地址-u用户名-p用户密
- 世界五百强面试题目及应答评点 (二)
- 构造器的用法
- C++中有三种创建对象 内存分配问题
- 一道常被人轻视的前端JS面试题
- OpenGL之入门学习
- 直方图反向投影
- 深入理解Java虚拟机读书笔记
- 【HNOI2016模拟3.26】A
- 15 个最佳 jQuery 翻书效果插件
- 史上最全开源大数据工具汇总
- 我的Python学习之路之基本语法-面向对象编程