c 语言 malloch函数与free函数
void *malloc(size_t size)
动态内存分配 从堆(heap)中申请一块长度略大于size长度的内存以作使用,如果不使用free()释放,申请的内存会一直存在,我们称之为“内存泄漏”
注意:在申请内存时,要根据你想要的内存大小进行分配,有点像废话。看一下代码第6行,malloc(sizeof(char *))
其实我原本是想分配一个字节给char a 的 ,结果一激动就给了它4个字节(我ubuntu 是32位的)
返回类型:void* (无类型指针,别称万能指针,c++规定void* 可以强转成任何类型的指针)
malloc(0) 返回NULL,或一个可以被free()释放独特的指针,所以不是特殊情,不要用malloc(0)
free() 释放申请的内存
#free 只是释放申请的内存,并没有修改a的值,最后将NULL 赋值给a,就是防止之后误使用a 访问已释放的内存
#如果访问了,如代码11行,其实是有问题的(gcc 只是警告我%s 不过valgrind 提示有段错误)