动态内存分配 |无法在现场书写
Dynamic memory allocation | Unable to write on location
注意: 很抱歉,如果这是重复的,但我还没有找到任何与我相似的情况。
我在做一个C语言的项目,我不擅长这个。我对动态内存分配非常陌生。所以我面临的问题是,当我创建下面给出的结构实例时
typedef struct temp_ {
Household data;
struct temp_ * next;
}Node, *NodePtr;
通过这种方式或我到目前为止尝试过的许多其他方式
NodePtr makeNode(Household num){
NodePtr ptr = (NodePtr) malloc(sizeof(NodePtr));
ptr->data = num;
return ptr;
}
所以我得到了我无法理解的不同类型的错误。
如果有人能提供帮助,我们将不胜感激。
- 永远不要隐藏 typedef 后面的指针。这是非常容易出错的。在您的代码中,您没有分配足够的内存,因此出现段错误。
- 使用对象而不是
sizeof
中的类型
typedef struct temp_ {
Household data;
struct temp_ * next;
}Node;
Node *makeNode(Household num){
Node *ptr = malloc(sizeof(*ptr));
if(ptr) ptr->data = num;
return ptr;
}
注意: 很抱歉,如果这是重复的,但我还没有找到任何与我相似的情况。
我在做一个C语言的项目,我不擅长这个。我对动态内存分配非常陌生。所以我面临的问题是,当我创建下面给出的结构实例时
typedef struct temp_ {
Household data;
struct temp_ * next;
}Node, *NodePtr;
通过这种方式或我到目前为止尝试过的许多其他方式
NodePtr makeNode(Household num){
NodePtr ptr = (NodePtr) malloc(sizeof(NodePtr));
ptr->data = num;
return ptr;
}
所以我得到了我无法理解的不同类型的错误。 如果有人能提供帮助,我们将不胜感激。
- 永远不要隐藏 typedef 后面的指针。这是非常容易出错的。在您的代码中,您没有分配足够的内存,因此出现段错误。
- 使用对象而不是
sizeof
中的类型
typedef struct temp_ {
Household data;
struct temp_ * next;
}Node;
Node *makeNode(Household num){
Node *ptr = malloc(sizeof(*ptr));
if(ptr) ptr->data = num;
return ptr;
}