先理论来一波:
描述
C 库函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。
声明
void *malloc(size_t size)
参数
size – 内存块的大小,以字节为单位。
返回值
该函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。
----------------------------------------------------------分割线----------------------------------------------------------------------
我知道malloc在堆上,然后栈是系统管的,堆是用户管的。
使用栈就象我们去饭馆里吃饭(或吃快餐),只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
但到底啥时候用malloc还是没搞清楚。
其实具体还是看情况的,但万变不离其宗,就是:
当无法知道内存具体的位置时,想要绑定真正的内存空间,就要用到malloc()函数。
但感觉还是太抽象,举例子说明更好一点:
//例1
#include "stdio.h"
#include "malloc.h" //malloc()函数被包含在malloc.h里面
int main(void)
{
char*a=NULL; //声明一个指向a的char*类型的指针
a=(char*)malloc(100*