【发布时间】:2012-01-10 13:26:59
【问题描述】:
我有以下代码。
char a[] = "abcde";
char *b = "fghij";
char *c = malloc(6);
char *d = c;
c = "klmno";
练习说明:
画出数据结构a、b、c和d的图片(带内容), 您可以在其中查看已分配的内容并使用箭头显示如何分配 指针已设置。
我的解决办法是:
____________
a -> |a|b|c|d|e|\0|
¨¨¨¨¨¨¨¨¨¨¨¨
____________
b -> |f|g|h|i|j|\0|
¨¨¨¨¨¨¨¨¨¨¨¨
____________
c -> |k|l|m|n|o|\0|
¨¨¨¨¨¨¨¨¨¨¨¨
___________
d -> | | | | | | |
¨¨¨¨¨¨¨¨¨¨¨
但是我的解决方案没有被接受,响应是“为指向 b、c、d 但不是 a 的指针分配了内存”。谁能解释一下这是什么意思?
【问题讨论】:
-
从您的问题中不清楚您的答案是什么以及它有什么问题。请尝试改写它以使其更易于理解。
-
@karlphillip,c 未填写,已重新分配。
-
不,
c的内容没有复制到d。 -
@David 严格来说我们会复制内容。只是指针有一些地址作为内容。
-
想想看,
d指向的数据是随机的,因为它指向的是未初始化的内存。
标签: c pointers memory-management char