我目前正在尝试通过阅读“C 编程语言”来学习 C。我试图弄清楚诸如指针之类的东西,但我遇到了一个我无法理解的例子。
例子。
一个指针数组作为参数传递给给定的函数,它指向在函数内创建的变量,据我所知。
lineptr[nlines++] = p;
这是否只是因为之前使用的 alloc 函数才可行?这是如何工作的,这是一种安全的编码方式还是应该避免?
正如你所说,进来的lineptr
是一个指针数组。希望它们都是 NULL,否则我们将有内存泄漏,但我们仍然有我们的数组。
p0 | p1 | p2 | p3 |...
alloc
分配一些大小的内存块len
(这里的术语非常宽松)“存在”于函数之外的某处。它返回一个指向该内存的指针。然后我们可以自由地将此指针放入数组中。
当函数返回时,调用者将能够alloc
通过存储在数组中的指针访问由函数外部的“生存者”分配的内存。
如果你能更详细地解释为什么你担心这段代码,也许有一个更好的答案给你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句