双点内存分配

sen*_*thu 1 c pointers

char**r; r =(char**)malloc(10);

上面的分配是否足够?我不需要为char循环分配for循环吗?任何可以解释哪一个是正确的?

Eli*_*sky 5

这肯定是错的.char*在大多数架构中,A 的大小不会超过10.

这是一些示例代码:

char** r;
// Allocate an array of 10 char* in r
r = (char**)malloc(10 * sizeof(*r));
Run Code Online (Sandbox Code Playgroud)

现在每个元素r都是已分配的char*,可以用来指向某个地方.

另请注意,在上面的代码中,我投射(如你所做)的结果malloc.只有在使用C++编译器而不是不需要强制转换的C编译器编译此代码时,才需要这样做.OTOH,你需要C++ new,而不是malloc.