赞
踩
C/C++语言一只被认为是一种底层语言,与其他语言不一样,对内存结构理解是C/C++程序员从入门到入土的开端。
其他编程语言对内存管理是透明的,程序员无序关心可以认为是一个黑盒;而C/C++不一样理解好内存结构有利于编写健壮性的代码
C++的内存结构主要涉及以下区域
代码区有两个很重要的特性:
这些特点使得代码区能够更有效地支持多个程序的并发执行,并在运行时提供一定程序的保护,确保代码和只读数据的完整性。
全局/静态存储区是程序中用于存储全局变量和静态变量的内存区域。这些变量在程序的整个声明周期内存在,并且其内存分配发生在程序启动时,知道程序结束。全局/静态存储区包括两个主要部分:全局变量区和静态变量区。
高级语言中一般不需要管理栈帧的操作,在低级(汇编)语言中,程序员有更多的控制权,可以直接操作栈,高级语言中这种底层的栈帧操作通常有编译器自动处理。
所有程序共享的一个空间
用户代码不能读写的一段地址
作为一个专业的C++使用者来说,清楚的知道自己的代码变量存储的区域会有非常大的好处,补单能够写出高性能代码,而且有助于减少一些深层次的BUG。
使用C++内存的一些注意事项
内存泄漏:确保在动态分配内存后找个合适的时机释放掉,避免出现内存泄漏
野指针:注意在指针使用后及时置为nullptr,避免访问已经释放的内存
栈溢出:谨慎使用递归或者在栈区使用巨大的空间分配局部变量,以免造成栈溢出
悬挂指针:避免悬挂指针的问题,即指向已经释放的内存区域
智能指针:考虑使用C++的智能指针(std::unique_ptr、std::shared_ptr),提高内存管理的安全性和便利性。
局部变量生命周期:理解局部变量的生命周期,确保在离开其作用域前不在访问。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。