当malloc()为一个函数的局部指针分配内存时, 还需要用free()明确的释 ...

发布网友 发布时间:2024-10-23 17:29

我来回答

3个回答

热心网友 时间:6分钟前

是的。记住指针和它所指向的东西是完全不同的。局部变量在函数返回时就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对象。用 malloc() 分配的内存直到明确释放它之前都会保留在那里。一般地, 对于每一个 malloc() 都必须有个对应的free()调用。

热心网友 时间:4分钟前

其实做到动态开辟分配并且释放是很难的 在大程序中你要考虑你开辟的内存空间何时才能释放 比如很长一段时间可能不会用 如果你不释放那么这段空间就一直在 无疑降低了你内存使用率 但是可能又会马上要用 你释放了又得开辟 所以这个释放问题你得考虑空间和时间 孰轻孰重了
所以java 和 C++分别都有垃圾回收器和析构函数来做这个 不要程序员来做 当然这降低了运行效率 (linus就这样说C++ 他极其不喜欢C++)
如果你是在函数中开辟的 而且没有释放 因为你还想用 所以你这个函数应该返回开辟空间首地址(有可能你形成链表使用)并且应该付给一个指针变量 如果不返回 这段空间就在内存中消失 直到你释放或者整个程序退出 这就是所谓的(内存泄露)

热心网友 时间:3分钟前

局部变量在函数返回时就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对象。用 malloc() 分配的内存直到明确释放它之前都会保留在那里。一般地, 对于每一个 malloc() 都必须有个对应的free()调用
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com