当malloc()为一个函数的局部指针分配内存时, 还需要用free()明确的释放吗?
3个回答
2016-05-10 · 知道合伙人人力资源行家
关注
展开全部
局部变量在函数返回时就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对象。用 malloc() 分配的内存直到明确释放它之前都会保留在那里。一般地, 对于每一个 malloc() 都必须有个对应的free()调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实做到动态开辟分配并且释放是很难的 在大程序中你要考虑你开辟的内存空间何时才能释放 比如很长一段时间可能不会用 如果你不释放那么这段空间就一直在 无疑降低了你内存使用率 但是可能又会马上要用 你释放了又得开辟 所以这个释放问题你得考虑空间和时间 孰轻孰重了
所以java 和 C++分别都有垃圾回收器和析构函数来做这个 不要程序员来做 当然这降低了运行效率 (linus就这样说C++ 他极其不喜欢C++)
如果你是在函数中开辟的 而且没有释放 因为你还想用 所以你这个函数应该返回开辟空间首地址(有可能你形成链表使用)并且应该付给一个指针变量 如果不返回 这段空间就在内存中消失 直到你释放或者整个程序退出 这就是所谓的(内存泄露)
所以java 和 C++分别都有垃圾回收器和析构函数来做这个 不要程序员来做 当然这降低了运行效率 (linus就这样说C++ 他极其不喜欢C++)
如果你是在函数中开辟的 而且没有释放 因为你还想用 所以你这个函数应该返回开辟空间首地址(有可能你形成链表使用)并且应该付给一个指针变量 如果不返回 这段空间就在内存中消失 直到你释放或者整个程序退出 这就是所谓的(内存泄露)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询