长沙口碑好网站建设,网络推广公司推荐,室内设计公司取名字大全集,上海公司招聘信息一个由C/C编译的程序占用的内存分为以下几个部分 1、栈区#xff08;stack#xff09;— 由编译器自动分配释放 #xff0c;存放函数的参数值#xff0c;局部变量的值等。 2、堆区#xff08;heap#xff09; — 一般由程序员分配释放#xff0c; 若程序…一个由C/C编译的程序占用的内存分为以下几个部分 1、栈区stack— 由编译器自动分配释放 存放函数的参数值局部变量的值等。 2、堆区heap — 一般由程序员分配释放 若程序员不释放程序结束时可能由OS回收。 3、全局区静态区数据段static—全局变量和静态变量的存储是放在一块的初始化的全局变量和静态变量在一块区域未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放数据段在程序运行期间始终存在直到程序结束时才被释放。 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。
//main.cpp int a 0; 全局初始化区 char *p1; 全局未初始化区 int main() { int b; //栈 char s[] “abc”; //s在栈区且abc\0不在常量区 char *p2; //栈 char *p3 “123456”; // 123456/0在常量区p3在栈上static int c 0 全局静态初始化区p1 (char *)malloc(10); p2 (char *)malloc(20); //分配得来得10和20字节的区域就在堆区,注意并非p1p2在堆区strcpy(p1, “123456”); // 123456/0放在常量区编译器可能会将它与p3所指向的”123456”优化成一个地方 }