1:malloc概述
malloc(num)动态申请num字节的内存空间,函数申请成功返回内存的起始地址(void型),申请不成功返回NULL指针,malloc不初始化内存空间;calloc(type,num)函数会初始化申请的内存空间为0;使用完申请的内存后需要用free(*p)释放内存并且将指针P=NULL,防止野指针;
以下代码在ubuntu10.04上验证,GCC编译器;
2:一维内存动态申请
#include <stdio.h>
#include <malloc.h>
int main()
{
char i = 0;
char num = 10;
char *ptr = NULL;
ptr = (char *)malloc(sizeof(char)*(num+1)); //多申请一个字节,用于存放字符串结束符'\0'
//ptr = (char *)calloc(num+1,sizeof(char)); //申请num*sizeof(char)的空间并且初始化内存空间为0,如果空间是指针类型的变量,则为NULL
if(ptr != NULL) //申请成功
{
for(i=0;i<num;i++)
{
*(ptr+i) = 'A'+i;
}
*(ptr+i) = '\0';
printf(&