转载请标明出处:
http://blog.csdn.net/hai_qing_xu_kong/article/details/53500855
本文出自:【顾林海的博客】
前言
存放在栈中的数据,会在调用函数时由系统自动分配,并在函数结束后自动释放。有时候我们希望数据不随函数结束后释放,这是就需要缓冲区,那如何获取一块连续的缓冲区,缓冲区来自特定的内存区域-堆。
堆
在堆上,缓冲区独立于任何函数的栈,因此,它可以在多个函数中使用。使用 malloc() 函数可以得到一块内存缓冲区,当程序不在使用这块缓冲区的时候,可以调用 free() 函数,来释放相应的内存。(mallo 和 free 来自于 stdlib.h)
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
typedef struct{
float height;
int weight;
}Person;
int main(int argc, const char * argv[]) {
Person *bill=(Person *)malloc(sizeof(Person));
bill->height=178.5;
bill->weight=62;
printf("height=%f\n",bill->height);
printf("weight=%d\n",bill->weight);
free(bill);
bill=NULL;
return 0;
}
以上程序,是在堆中为Person结构分配内存。