C++-内存四区
内存四区:
1.代码区:
代码区:用来存放你写的代码的,只读和共享。
只读:意思是编译运行后不能操作,其目的是防止程序意外的修改了他的命令。
共享:共享的目的是对于频繁执行的程序,只需要在内存中有一份代码即可。
2.全局区:
全局变量和静态变量存放在此。 静态变量:static+普通变量=静态变量
全局区还包含了常量区字符串常量和其他常量也存放自此。常量:1.字符串常量2.const修饰的变量(1.const修饰的全局变量 2.const修饰的局部变量)
[一.不在全局区中:局部变量,局部常量\ 在全局区中:全局变量,静态变量,字符串常量,全局常量]
3.栈区:
由编译器自动分配释放,存放函数的参数值,局部变量。
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放。
局部变量存放在栈区,栈区的数据在函数执行完后自动释放。
(形参数据和局部变量放在栈上)
(第一次可以打印正确的始祖,是因为编译器做了保留)
4.堆区:
由程序员分配释放,若程序员不释放,程序结束时由操作系统回收。
在c++中主要利用new在堆区开辟内存。int*p=new int(10)
实质是在栈区定义了一个指针型的局部变量,指向了堆区的地址。
new运算符:
int*p=new int(10) ;开辟一个堆区的内存
delete p;释放new开辟的空间
利用new开辟数组
int* arr = new int [10];利用for循环来操控。
for(int i ;i<10;i++)
{
arr[i]=i+100
}
释放堆区的数组
delete[] arr;
释放数组的时候要加[]才可以。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理