C语言中比较复杂的是对程序运行过程中在内存分配方面的分析问题,接下来简单介绍下C语言中一般是怎么分配的,内存中分为栈,堆,
栈:栈中存放的是局部变量,出了作用域变量就会被释放,栈是从高地址到低地址存放变量,具有先进后出的特点。
堆:恰恰与栈相反,堆是从低地址向高地址存放变量的。存放在堆里的变量是由人工申请空间的,也需要人工释放空间。
静态区:全局变量等
内存从高地址到底地址依次是栈区,堆区和静态区,例如,下面这个例子
#include <stdio.h>
#include <stdlib.h>
int a = 0;
int main()
{
int i = 0;
int j = 0;
char *p = (char *)malloc(sizeof(char));
printf("%p", &a);
printf("\n");
printf("%p", &i);
printf("\n");
printf("%p", &j);
printf("\n");
printf("%p", &p);
printf("\n");
system("pause");
return 0;
}
结果如下:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。