1

我目前正在尝试通过阅读“The C Programming Language”来学习 C。我试图弄清楚诸如指针之类的东西,但我遇到了一个我无法理解的例子。
例子
一个指针数组作为参数传递给给定函数,据我了解,它指向在函数中创建的变量。

lineptr[nlines++] = p;

由于之前使用了 alloc 函数,这是否可行?这是如何工作的,这是一种安全的编码方式还是应该避免?

4

1 回答 1

2

正如你所说,进来的lineptr是一个指针数组。希望它们都是 NULL,否则我们会有内存泄漏,但我们仍然有我们的数组。

p0 | p1 | p2 | p3 |...

alloc分配一些大小的内存len(这里的术语非常松散)“生活”在函数之外的某个地方。它返回一个指向该内存的指针。然后我们可以自由地将这个指针放入数组中。

当函数返回时,调用者将能够alloc通过存储在数组中的指针访问函数外部“生活”分配的内存。

如果您可以更详细地解释为什么您担心此代码,也许会有更好的答案。

于 2019-03-15T13:06:47.680 回答