#include<stdio.h>
/**
在C中动态分配内存的基本步骤有:
1,用malloc类的函数分配内存;
2,用这些内存支持应用程序
3,用free函数释放内存
二、动态内存分配函数
malloc :从堆上分配内存
realloc : 在之前分配的内存块的基础上,将内存重新分配为更大或者更小的部分
calloc: 从堆上分配内存并清零
free:将内存块返回堆
*/
void mainaa()
{
int *pi = (int*) malloc(sizeof(int));
*pi = 5;
printf("*pi:%d\n",*pi);
free(pi);
}
//为字符串分配内存,将其初始化,并逐个字符打印字符串,然而每次迭代name都会增加1,最后name会指向字符串结尾的NUL字符,
//分配内存的起始地址丢失了
void mainbb()
{
//为10个双精度浮点数分配空间,需要80个字节
//double *pd = (double*)malloc(NUMBER_OF_DOUBLES*sizeof(double));
//以下程序只分配了10个字节
const int NUMBER_OF_DOUBLES = 10;
double *pd = (double*)malloc(NUMBER_OF_DOUBLES);
//初始化静态或全局变量时不能调用函数,下面的代码声明一个静态变量,并试图用
//malloc来初始化,这样会产生一个编译时错误消息
//static int *pi = malloc(sizeof(int));
char *name = (char*)malloc(strlen("Susan")+1);
strcpy(name,"Susan");
while(*name != 0){
printf("%c",*name);<