C++动态内存分配详解


需知:在 C++中 指针的主要用处是管理和操纵动态分配的内存

静态与动态内存分配的两个主要区别是:

1.静态对象是有名字的变量 我们直接对其进行操作 而动态对象是没有名字的变量我们通过指针间接地对它进行操作

2.静态对象的分配与释放由编译器自动处理 程序员需要理解这一点 但不需要做任何事情 相反 动态对象的分配与释放 必须由程序员显式地管理 相对来说比较容易出错它通过 new 和 delete 两个表达式来完成

对象的动态分配可通过 new 表达式的两个版本之一来完成:

第一个版本用于分配特定类型的单个对象

                                 int *pint = new int( 1024 )

分配了一个没有名字的 int 类型的对象 对象初始值为 1024 。表达式返回的是对象在内存中的地址,这个地址被用来初始化指针对象 pint(赋值)

第二个版本 用于分配特定类型和维数的数组 例如

                            int *pia = new int[ 4 ];

 分配了一个含有四个整数元素的数组 不幸的是 我们没有办法给动态分配的数组的每个元素显式地指定一个初始值

扫描二维码关注公众号,回复: 5865912 查看本文章

pint 与 pia 的不同之处在于 pia 拥有四元素数组的第一个元素的地址 而 pint 只是简单地包含单一对象的地址

// 删除单个对象
delete pint; 
 数组形式的 delete 表达式如下
// 删除一个对象数组
delete [] pia; 
 如果忘了删除动态分配的内存 又会怎么样呢 如果真的如此 程序就会在结束时出现
内存泄漏 memory leak 的问题 。

猜你喜欢

转载自blog.csdn.net/yonggandess/article/details/89020473