Ben*_*Ben 0 c malloc struct pointers char
我目前有以下代码。
struct qnode
{
char *path;
struct qnode *next;
}
typedef struct qnode Node;
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在 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;
Run Code Online (Sandbox Code Playgroud)
我已经验证 strlen 确实在正确的指针上运行并且它确实返回了大小的长度。出于某种原因,尽管此时我遇到了分段错误,但我不明白为什么。
仅供参考,这是分配的一部分,但是这条简单的 malloc 行不是专门分配的,也不是使用 C 语言。我被允许在作业中使用 C++,但我选择了 C 来获得更多关于该语言的知识。
谢谢您的帮助!
您没有分配足够的内存。您需要为零终止符留出空间。您还必须复制字符串的内容,而不是将指针分配给字符串。这两个错误都会导致堆损坏并解释您的错误。代码应该是这样的:
cur->path = malloc(strlen(*path)+1);
printf("Malloc path success");
strcpy(cur->path, *path);
Run Code Online (Sandbox Code Playgroud)
strdup
如果您的系统可用,您当然可以使用它,但请注意,它不是标准 C 的一部分。
归档时间: |
|
查看次数: |
8730 次 |
最近记录: |