C语言如何用free

Python012

C语言如何用free,第1张

#include <stdio.h>

#include <malloc.h>

int main()

{

int *p = (int *)malloc(10) //动态申请10字节内存空间

free(p) //释放申请的内存空间

getchar()

return 0

}

不可以的。

malloc, alloc, free是c定义的一组内存管理的API函数,当你调用malloc、alloc分配内存时,不仅仅是从堆里面分配得到了可用内存,实际上内存管理子系统还会维护了内存列表。你自己定义的指针不会在这个列表中的,所以free会出问题的。

那么,使用new, GlobalAlloc之类的方式分配的内存可不可以使用free呢。我的回答是,尽量不要,大部分情况都会带来风险。这里面涉及new, malloc, GlobalAlloc, HeapAlloc, LocalAlloc,VirtualAlloc等函数的区别。

是因为你的malloc用错了,分配少了内存。

正确如下:

#include <stdio.h>

#include <malloc.h>

int main(void)

{

int *p = (int *)malloc(sizeof(int))

*p = 22

free(p)

return 0

}

int的大小通常是4,不是2。