如何'免费/删除'工作



可能的重复:
删除在C++中是如何工作的
C编程:免费怎么知道要免费多少?

对于每个动态内存分配,使用"malloc/new",我们都有方法"free/delete"来释放分配的内存。

我的问题是,如果在运行时决定内存分配大小,并且内存位置不连续,那么这些内存释放方法如何知道要释放多少内存,以及要清除哪些内存位置?

如果我们只向这些函数传递一个指向单个位置的指针,那么这些函数的工作原理是什么?

它们跟踪您在内部分配了多少内存。

malloc/new分配内存时,还会记录为指向给定内存位置的指针分配的内存位置和数量。当您给free/delete一个指针时,它会查找要释放的内存。

这就是为什么你永远不应该尝试释放你用"+="或类似的东西移动的指针。

最新更新