【发布时间】:2011-11-03 14:40:03
【问题描述】:
我有一个指向 struct 的指针数组,由于任何原因,当我打印这个数组时,它的末尾有一个备用元素,因此导致代码在末尾打印一个 NULL 字节。
反正我可以删除最后一块内存吗?
例如:
typedef struct
{
char *name;
} B;
typedef struct
{
B *var;
} A;
int main() {
int num = 5; //for example
A *foo = malloc(sizeof(A));
B *bar = malloc(num * sizeof(B));
for (int i = 0; i < num; i++) {
bar[i] = *create_b(&bar[i]); // some function that works.
}
foo->var = bar;
while (foo->var != NULL) {
printf("This is %s\n",foo->var->name);
foo->var++;
}
}
一切都打印得很好,但在循环结束时有一个不需要的打印。比如:
This is A
This is B
This is C
This is D
This is F
This is
显然数组只有 5 个元素,最后一个不打印任何内容。
【问题讨论】:
-
如果它是一个char数组作为struct的成员,检查数组是否为空终止。它不应该打印它。除非您向我们展示您实际尝试的代码,否则很难弄清楚。
-
数组中的数据你初始化了吗?
-
你能给我们看一个有问题的代码示例吗?就像你如何定义数组、结构以及如何打印数组一样?
-
您确定要遍历指针数组所具有的
right amount元素吗? -
我刚刚添加了代码:)