
C语言中非常复杂的是对程序运行过程中在存储分配方面的剖析问题,接下来简单介绍下C语言中通常是如何分配的,内存中分为栈,堆,
栈:栈中存放的是局部变量,出了作用域变量都会被传递,栈是从高地址至低地址存放变量,具有先进后出的特征。
堆:恰恰与栈相反,堆是从低地址向高地址存放变量的。存放在堆里的变量是由人工申请空间的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;
}
结果如下:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-134644-1.html
好喜欢
这种先人后己
期待小王子