2012-06-26 34 views
0

差异,我们应该更喜欢一个比其他的区别?什么是启动指针和内部指针以及何时使用启动指针和内部指针之间以及在何种情况下,这些

+6

我从来没有听说过内部指针。你从哪里听到这些名字? – RedX

+2

如果[interior_ptr(http://msdn.microsoft.com/en-us/library/y0fh545k(V = VS.80)的.aspx)是你在说什么,请更新标签[C++ - CLI ](删除C,C没有这样的概念)。 – Mat

+0

@Redx我正在经历以下DOC这意味着仅C:http://es.gnu.org/~aleksander/valgrind/valgrind-memcheck.pdf –

回答

4

作为一个完整的猜测,“开始指针”是由mallocnew[]返回的指针,而“内部指针”是指向分配中间的指针。

如果是这样,那么重要的区别是您需要free开始指针,而不是内部指针。

这是不是从标准的术语,虽然。 “内部指针”通常意味着一个指向更大块内存的指针,我想/推导出其余部分。所以,你可能需要提供上下文。什么书/课程/面试是来自哪个问题?

0

我相信Steve Jessop的回答是一个正确的答案,即开始指针是malloc()等返回的指针。内部指针指向该分配内的位置。我无法改进他的答案,但我会扩展它:

作为一个示例,您可能需要多达几千个某些结构的实例作为链接列表。不需要根据需要为结构(或类)调用malloc(),只需调用一次malloc()就可以为几个thousdand实例分配足够的内存。然后你创建一个自由列表(空闲实例的链接列表)。您可以通过移动免费列表和使用列表之间的实例(通过调整指针链接移动)来使用并释放它。然后,当程序不再需要结构体的任何实例时,只需在起始指针(即最初由malloc()返回的起始指针)上调用free()。

我在.NET和Windows的Windows和C++编程环境中遇到了内部指针的另一个定义:http://www.codeproject.com/Articles/8901/An-overview-of-interior-pointers-in-C-CLI

在C++/.NET中,内部指针也可能指向CLI堆中的内存指针,即.NET的托管内存。不过,在我看来,这是基本相同的想法。通过在.NET中使用C++和C来管理内存,我想我们并不关心starter指针,因为我们永远不会调用free()来释放内存。 .NET为我们做垃圾回收。