最近在复习C语言时,学到了一个以前上课没有讲过的知识:动态内存分配。 做些笔记。
/*-------------------------------------------------------
动态内存分配 2015-12-8
--------------------------------------------------------*/
#include <stdio.h>
#include <malloc.h> //malloc()函数所在的头文件
int main(void)
{
int i = 5; //分配了四个字节,静态分配
int *p = (int *)malloc(4);
/*
1、要使用malloc()函数,必须添加malloc.h这个头文件;
2、malloc()函数只有一个形参,并且形参是整形(如果以char定义就是char型);
3、括号中的4表示为本程序分配四个字节;
4、malloc()函数只能返回第一个字节的地址;
5、该行分配了8个字节,p变量占4个字节,p所指向的内存也占4个字节;
6、p本身所占的内存是静态分配的,p所指向的内存是动态分配的;
*/
*p = 5; /* *p代表的就是一个int变量,只不过*p这个整形变量的内存分配方
式和int i = 5那行的i变量的分配方式不同*/
free(p); /* free(p)表示把P所指向的内存给释放掉,p本身的内存是静态的,
不能由程序员手动释放,p本身的内存只能在p变量所在的函数运行
终止时由系统自动释放*/
return 0;
}