c - Valgrind:分配内存时跳转或移动取决于未初始化的值

标签 c memory-management valgrind

我似乎无法弄清楚为什么会出现此错误。我运行 valgrind 并显示 newNode = (NodeType *)malloc(sizeof(NodeType));正在创建错误,但我不明白为什么......基本上我想做的是初始化传入的大小为 n 的链表并将头设置为第一个节点。

typedef struct {
  int number;
  AnotherNodeType *anotherLinkedList;
} Type;

typedef struct Node{
  Type *data;
  struct Node *next;
} NodeType;


int main(){
  NodeType *nodePointer = NULL;
  initLinkedList(&nodePointer, 10);
  return 0;
}

void initLinkedList(NodeType **nodePointer, int n){
  int i;
  NodeType *prevNode, *newNode;
  prevNode = NULL;
  for (i = 0; i < n; i++){
    newNode = (NodeType *)malloc(sizeof(NodeType));
    newNode->data = (Type *)malloc(sizeof(Type));
    newNode->data->number = i;
    newNode->data->anotherLinkedList = NULL;
    if (prevNode == NULL){
      *nodePointer = newNode;
    }
    else{
      prevNode->next = newNode;
    }
    prevNode = newNode;
  }
}

最佳答案

您没有在 initLinkedList 中初始化 newNode->next

关于c - Valgrind:分配内存时跳转或移动取决于未初始化的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296203/

相关文章:

c++ - 无法使用内存位置更改 const 值

valgrind - 可以在 Valgrind 抑制文件中使用注释吗?

c - valgrind 大小 1 的无效读取 - 比较期间发生

c - 如何将 dlsym 返回的指针正确赋值给函数指针类型的变量?

c - 尝试编写计算指定文件中字节数的程序(C语言)

c - 守护进程/后台通过脚本从另一个程序启动的进程

c++ - 我应该如何关注 valgrind 中阻止的损失

c# - 是否有类似 Shazzam 和 Soundhood 的歌曲检测库?

android - 无论如何,应用程序可以使用超过 16mb 的内存吗?

python - 将文件长时间保留在内存中