我目前正在尝试通过阅读“ The C Programming Language”学习C。我试图弄清楚诸如指针之类的东西,但是遇到了一个我无法理解的例子。
Example。
指针数组作为参数传递给给定的函数,它指向在函数内创建的变量,据我所知。
lineptr[nlines++] = p;
这是否仅因为之前使用过alloc函数而可行? 这是如何工作的,这是一种安全的编码方式还是应该避免?
答案 0 :(得分:2)
正如您所说,进入lineptr
是一个指针数组。希望它们都为NULL,因为否则我们将发生内存泄漏,但仍然有数组。
p0 | p1 | p2 | p3 |...
alloc
分配一些大小为len
的内存块(这里的术语非常宽松)“驻留”在函数外部。它返回一个指向该内存的指针。然后,我们可以自由地将此指针放在数组中。
当函数返回时,调用者将能够通过存储在数组中的指针访问由alloc
分配的“驻留”在函数外部的内存。
如果您可以更详细地解释为什么担心此代码,那么也许可以为您找到一个更好的答案。