内存中存在三种数据
全局中的数据、堆中的数据、临时堆栈中的数据
1.全局数据
static int value = 100;
void process()
{
static int number = 10;
}
value和number的数据其实都属于全局数据,这里的变量是不随着函数的调用发生变化的。
2.堆中的数据
void process()
{
char* point = (char*)malloc(100);
free(point);
}
分配的数据就是堆数据,如果没有free操作,那么它的存在也是全局的。只要内存不主动释放,那么这个内存就会以一直存在。3.临时数据
void process()
{
char name[100] = {0};
return;
}
这里的数据都是堆栈内部的数据,一旦process调用结束返回之前,那么name地址指向的内存空间已经被其他函数使用。
关于内存还有很多值得学习的地方,包括之前文章讲到的,函数调用,在堆栈中是怎么样实现的。