起始指针和内部指针之间的区别以及在什么情况下我们应该更喜欢一个而不是另一个?
2 回答
作为一个完整的猜测,“开始指针”是由malloc
or返回的指针new[]
,而“内部指针”是指向分配中间的指针。
如果是这样,那么重要的区别是您需要free
开始指针,而不是内部指针。
不过,这不是标准中的术语。“内部指针”通常表示指向更大内存块的指针,我猜/推断其余部分。因此,您可能需要提供上下文。问题出自哪本书/课程/采访?
我相信史蒂夫杰索普的答案是正确的答案,即起始指针是由 malloc() 等返回的指针。内部指针是指向该分配中位置的指针。我无法改进他的答案,但我会扩展它:
例如,您可能需要将某些结构的数千个实例作为链表。无需根据需要为结构(或类)调用 malloc(),只需调用 malloc() 一次即可为几千个实例分配足够的空间。然后创建一个空闲列表(空闲实例的链接列表)。您可以通过在空闲列表和使用列表之间移动实例(通过调整指针链接移动)来使用和释放。然后,当程序不再需要该结构的任何实例时,您只需在开始指针上调用 free(),它最初由 malloc() 返回。
我在这里遇到了 Windows 和 .NET Windows 的 C++ 编程上下文中内部指针的另一个定义:http: //www.codeproject.com/Articles/8901/An-overview-of-interior-pointers-in-C -命令行界面。
在 C++ / .NET 中,内部指针也可以表示指向 CLI 堆中的内存的指针,即 .NET 的托管内存。但是,在我看来,这基本上是相同的想法。通过使用 C++ 和 C 与 .NET 管理内存,我想我们并不关心起始指针,因为我们永远不会调用 free() 来解除分配。.NET 为我们进行垃圾收集。