西安网站有哪些手续费,搜狗新闻源网站怎么做,汉中建网站,石家庄新闻记者求助电话目录 内存四区
程序运行前
代码区
全局区
程序运行后
栈区
堆区
new操作符
创建一个数
创建一个数组 内存四区
不同区域存放不同的数据#xff0c;赋予不同的生命周期#xff0c;让我们更加灵活的编程
程序运行前
程序运行前就有代码区和全局区
代码区
程序编…目录 内存四区
程序运行前
代码区
全局区
程序运行后
栈区
堆区
new操作符
创建一个数
创建一个数组 内存四区
不同区域存放不同的数据赋予不同的生命周期让我们更加灵活的编程
程序运行前
程序运行前就有代码区和全局区
代码区
程序编译后会生成exe可执行程序
代码区存放的是cpu执行的机器指令二进制01
有两个特点
共享性
对于频繁执行的代码程序中只需要有一份
只读性
不可以被修改防止程序意外
全局区
存放全局变量与静态变量常量
可以在编译器内尝试输出它们的地址全局区的地址会挨在一起而非全局区的变量又会存在另一块地址处 程序运行后
栈区
栈区内存由编译器自动分配释放
不要返回局部变量的地址因为局部变量存在栈区当函数执行完后栈区的内存会被自动释放
编译器会为我们做一次保留第二次就不会保留了而是给我们一段乱码
堆区
由程序员进行分配和释放如果程序员没释放程序结束时也会由操作系统回收
使用new关键字可以将数据开辟到堆区
int *p new int(10)
示例开辟内存并且将内存的地址给指针p 那个地址处存的值为10
指针p还是在栈空间里面保存的是地址 new操作符 创建一个数
#includebits/stdc.h
using namespace std;
using ll long long;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int *p new int(10);cout *p endl;delete p;cout *p;return 0;
} 第二次会输出乱码
创建一个数组
#includebits/stdc.h
using namespace std;
using ll long long;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int * arr new int[10];//在堆区创立一个含10个元素的数组arr为该数组的首地址for(int i 0; i 10; i){arr[i] i;}for(int i 0; i 10; i) cout arr[i] endl;return 0;
} delete[] arr;//释放堆区数组