()Ⅹ6<477X()<29

假定一个 double 类型的变量需要内存空間可以定义一个指向 double* 类型的指针。再在执行程序时请求为该变量分配内存空间。

 
注意所有的指针都应初始化。如果指针没有包含合法的地址就应该总是让它包含 nullptr。
在上述代码中第二行代码中的 new 运算符会返回在自由存储区给 double 变量分配的内存地址,这个地址应存储在 pvalue 指针中接着就可以通过前面介绍的间接运算符,使用这个指针引用该变量了
 
当不再需要动态分配内存的变量时,就可以使用 delete 运算符釋放它占用的内存:
 
delete 运算符释放了内存,但没有改变指针
解除对悬挂指针的引用会造成严重的问题,所以应总是在释放指针指向的内存時重新设置该指针。
 
现在 pvalue 不再指向任何内容该指针不能用于访问已释放的内存。使用包含 nullptr 的指针来存储或提取数据这会立即终止程序。
对包含 nullptr 值的指针变量应用 delete 是安全的这种语句不会有任何效果。因此没有必要使用下面的 if 测试:
 
警告:每个 new 必须对应一个 delete,每个 new[] 必須对应一个 delete[]如果不能这样对应,就会导致不确定的行为或内存泄漏

 


在现代 C++ 代码中,没有它们的立足之地总是应该使用 std::vector<>容器(来替换戓智能指针)来动态分配对象并管理其生存期。这些高级替代方法比低级的内存管理方法安全得多可立即清除程序中的所有悬挂指针、哆次释放、分配/释放不匹配和内存泄漏问题,为程序员提供巨大的帮助

 
}

我要回帖

更多关于 &amp;lt 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信