c 语言 malloch函数与free函数

void *malloc(size_t size) 

动态内存分配    从堆(heap)中申请一块长度略大于size长度的内存以作使用,如果不使用free()释放,申请的内存会一直存在,我们称之为“内存泄漏”


注意:在申请内存时,要根据你想要的内存大小进行分配,有点像废话。看一下代码第6行,malloc(sizeof(char *))

其实我原本是想分配一个字节给char a 的 ,结果一激动就给了它4个字节(我ubuntu 是32位的)


返回类型:void* (无类型指针,别称万能指针,c++规定void* 可以强转成任何类型的指针)

c 语言 malloch函数与free函数

malloc(0) 返回NULL,或一个可以被free()释放独特的指针,所以不是特殊情,不要用malloc(0)


free() 释放申请的内存

c 语言 malloch函数与free函数

c 语言 malloch函数与free函数

#free 只是释放申请的内存,并没有修改a的值,最后将NULL 赋值给a,就是防止之后误使用a 访问已释放的内存

#如果访问了,如代码11行,其实是有问题的(gcc 只是警告我%s 不过valgrind 提示有段错误)