内存四区

xiaoxiao2021-02-28  111

内存四区定义

栈区 : 由编译器自动分配释放、存放函数的参数值、局部变量等值堆区 : 一般由程序员分配释放(动态内存分配与释放)若程序员不释放、程序结束时可能由操作系统回收全局区: 全局变量和静态变量储存在一起代码区: 程序代码区、存放函数体的二进制代码

内存四区调配示例1

char *getStr1(){ char *p1 = "abcde"; return p1; } char *getStr2(){ char *p2 = "abcde"; return p2; } void main(){ char *p1 =NULL; char *p2 = NULL; p1 =getStr1(); p2 =getStr2(); //输出指针指向的字符串 printf("p1:%s p2:%s",p1,p2); //输出指针的值 printf("p1:%d p2:%d",p1,p2); }

内存四区调配示例2

//堆区分配内存 char *getNum(int num){ char *p1 =NULL; p1 =malloc(sizeof(char)*num); if(p1==null){ return null; } return p1; } //栈区分配内存 char *getNum2(){ char str[64]; strcpy(str,"123456"); return str; } void main(){ char *tmp =NULL; //读取堆区的内存 OK tmp =getNum(10); strcpy(tmp,"123456"); printf("str:%s",tmp); //读取栈区内存 ERROR tmp = getNum2(); printf("str:%s",tmp); }

转载请注明原文地址: https://www.6miu.com/read-38196.html

最新回复(0)