c语言,malloc()函数的问题
csdn上看来的,还是不懂。【Thatmeans,unfortunately,thataprogrammightruninsimplecases(whenmemoryis...
csdn上看来的,还是不懂。
【That means, unfortunately, that a program might run in simple cases (when memory is never reallocated) but break when used harder (and when memory is reused).
*****
这句话的意思是malloc不会初始化所分配的空间。如果你所申请的空间不释放,不被其他地方再次申请就不会有什么后果。如果你申请的空间进行一些写操作之后(空间里的内容已改变)你再释放再申请给其他指针使用(没有手动初始化)就可能导致程序崩溃。】
什么叫做“如果你申请的空间进行一些写操作之后(空间里的内容已改变)你再释放再申请给其他指针使用(没有手动初始化)就可能导致程序崩溃。”
他说的,在申请给其他指针使用,这个指针指的是跟malloc结合使用的指针,还是所有的指针,比如指向一个int a;的。
把空间释放了,再申请给其他指针用,不一定申请空间的指针就是这一块里的吧,还有,为什么内容已经改变后申请给其他指针会崩溃,难道内容没改变就不会崩溃?不一样是有内容么? 展开
【That means, unfortunately, that a program might run in simple cases (when memory is never reallocated) but break when used harder (and when memory is reused).
*****
这句话的意思是malloc不会初始化所分配的空间。如果你所申请的空间不释放,不被其他地方再次申请就不会有什么后果。如果你申请的空间进行一些写操作之后(空间里的内容已改变)你再释放再申请给其他指针使用(没有手动初始化)就可能导致程序崩溃。】
什么叫做“如果你申请的空间进行一些写操作之后(空间里的内容已改变)你再释放再申请给其他指针使用(没有手动初始化)就可能导致程序崩溃。”
他说的,在申请给其他指针使用,这个指针指的是跟malloc结合使用的指针,还是所有的指针,比如指向一个int a;的。
把空间释放了,再申请给其他指针用,不一定申请空间的指针就是这一块里的吧,还有,为什么内容已经改变后申请给其他指针会崩溃,难道内容没改变就不会崩溃?不一样是有内容么? 展开
1个回答
展开全部
一、malloc()不会初始化所分配的空间。(即,你申请的空间中,其内容是不确定的,可能有值,也可能没值)
二、当free()释放所申请的空间时,空间中的内容也不会被自动清除。
三、不断的malloc, free的过程中,内存中就会产生一系列的内存碎片,整个内存就象一个大的垃圾场。再次申请内存时,新划分的内存空间就建立在这个垃圾场上,如果操作不当就会产生问题(如:没有清理就使用,没赋值就输出等)
搞明白以上三个情况,其他的问题,我想你不必要多猜想了。学会正确使用指针就好了,等你的知识积累多了,再进行相应的思考吧。
二、当free()释放所申请的空间时,空间中的内容也不会被自动清除。
三、不断的malloc, free的过程中,内存中就会产生一系列的内存碎片,整个内存就象一个大的垃圾场。再次申请内存时,新划分的内存空间就建立在这个垃圾场上,如果操作不当就会产生问题(如:没有清理就使用,没赋值就输出等)
搞明白以上三个情况,其他的问题,我想你不必要多猜想了。学会正确使用指针就好了,等你的知识积累多了,再进行相应的思考吧。
追问
好高深,是不是搞懂这个还要看看计算机组成之类的?
追答
学计算机开发要了解与计算机相关的各种知识,学的越多,明白的越多。学无止境
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询