新手。在子函数中定义了结构体指针,并用malloc分配内存,将指针值返回到主函数,在主函数依然可以按照结构体访问这块内存 请问 子函数结束时 指针变量已经消亡了 但那一块内存的属性并没有变化 是不是有一些更具有全局性的东西在管理内存啊?
操作系统会管理。但是如果你的程序没有释放,甚至没有指针指向它了,那么这块内存就无法再利用了。也就是所谓的内存泄漏。
它是一直存在的,只是内容不可预料,如果内容被重写,你就访问出错了
一、内存管理
内存问题体现在两个⽅⾯:内存溢出、野指针异常。1)iOS给每个应⽤程序提供了⼀定的内存,⽤于程序的运⾏。iPhone 3GS内存 30M左右,iPhone 5S 内存80M左右。⼀旦超出内存上限,程序就会Crash。2)对象内存空间已经被系统回收,仍然使⽤指针操作这块内存。野指 针异常是程序crash的主要原因。代码量越⼤的程序,越难找出出现 野指针的位置。
二、内存管理的⽅......
答案就在这里:内存管理问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
函数返回后,你申请的内存并没有释放,所以你依然可以通过指针访问
你malloc的内存只有当程序结束,或者手动free以后才会释放。
malloc申请的内存是从堆里面获得空间,也就是说函数返回的指针是指向堆里面的一块内存,操作系统中有一个记录空闲内存地址的链表,当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。
PS:小程序即使你不free(造成内存泄漏)运行起来通常也没有问题,但对于一些大型的服务器程序(几年不关的),如果不停的内存泄漏那最后就呵呵了。。。