c语言中的free函数 c++中free函数

C语言的free()函数

因为free函数仅仅是告诉操作系统,这一块内存被释放了,可以用来作其它用途。但是,由于你没有重新对这块内存进行写操作,所以内存中的变量数值并没有发生变化。所以输出值不变。

永城网站建设公司创新互联,永城网站设计制作,有大型网站制作公司丰富经验。已为永城成百上千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的永城做网站的公司定做!

通常建议,将这个p用完了也置NULL

关于C语言的free()函数

struct LNode *addroot(struct LNode *_root)

{

struct LNode *p = NULL, *p2 = NULL;

if(_root == NULL)

{

_root = talloc();

dateget(_root);

}

else

{

for(p=_root; p-next != NULL; p=p-next)

;

p2 = talloc();

dateget(p2);

p-next = p2;

}

return _root;

}

======================================

???? for?

for(p=_root; p-next != NULL; p=p-next)

;

C语言 free()函数的使用规则

比如

int *a = (int*)malloc (100*sizeof(int));

int *b = a, *c = a + 10;

那么free(b) 和 free(a)是合法,他们的工作都是释放申请的a的内存100个int

再如用递归创建链表,

node* a = (node*)malloc(sizeof(node));

a-next = (node*)malloc(sizeof(node));

... ...

free(a)只释放node的申请内存,a-next不会释放,这样做会造成内存泄漏!

free的使用参考

c语言中,malloc和free是什么意思?

属于内存管理的两个函数,malloc是申请内存的,free是释放内存的。

1、malloc一般用法:

int *t=NULL;

t=(int *)malloc(sizeof(int));

也可以在sizeof前面加上一个'n*'这就成了一个动态分配数组的方法。

2、free一般用法:

int *t=NULL;

t=(int *)malloc(sizeof(int));

free(t);

这样t所指的空间就被释放掉了。

扩展资料:

malloc函数定义

其函数原型为void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。

如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。

参考资料来源:百度百科-malloc函数

参考资料来源:百度百科-free()

C语言:关于FREE()函数的用法

不可以的。

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

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


网站栏目:c语言中的free函数 c++中free函数
网站链接:http://cdiso.cn/article/hiddso.html

其他资讯