【发布时间】:2011-12-06 18:32:54
【问题描述】:
我目前有以下代码。
struct qnode
{
char *path;
struct qnode *next;
}
typedef struct qnode Node;
此时我的代码失败了,但是当我尝试在 struct qnode 中为 for 分配空间时。
void add(Node *front, Node *back,char **path)
{
/* Create the new node */
Node *cur = (Node *)malloc(sizeof(Node));
/* Verify node successfully created */
if(cur)
{
/* Populate Members of Node */
cur->path = malloc(strlen(*path)); /* fails here */
printf("Malloc path success");
cur->path = *path;
我已经验证 strlen 确实在正确的指针上运行,并且它确实返回了大小的长度。出于某种原因,尽管此时我遇到了分段错误,但我不明白为什么。
F.y.i 这是分配的一部分但是这个简单的 malloc 行不是专门分配的东西,也不是使用 C 语言。我被允许在作业中使用 C++,但我选择了 C 以获得更多关于该语言的知识。
感谢您的帮助!
【问题讨论】:
-
path的类型是什么?为什么要丢弃第二个malloc返回的指针?
标签: c struct char malloc pointers