gpt4 book ai didi

c - 错误: "Access not within mapped region at address" (Valgrind)

转载 作者:行者123 更新时间:2023-11-30 16:25:51 30 4
gpt4 key购买 nike

我遇到了 valgrind 的问题,给我一个错误,提示“访问不在地址 0x8 的映射区域内”。然后它说“在 0x400606:append_linked_list (testing2.c:64) by 0x400563: main (testing2.c:32)”。第64行是list->tail->next = newNode;,第32行只是调用第64行在append_linked_list(list, (void *) argv[i])中的函数;。当我运行该程序时,我只是将其运行为“./testing 这是一个相当短的测试字符串。”。有谁知道为什么 valgrind 给我这个错误?

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct Node
{
void *data;
struct Node *next;
struct Node *prev;
} Node;

typedef struct LinkedList
{
Node *head;
Node *tail;
} LinkedList;

Node *initialise_node(void);
LinkedList *initialise_linked_list(void);
Node *append_linked_list(LinkedList *list, void *data);

int main(int argc, char **argv)
{
LinkedList *list;
int i;

list = initialise_linked_list();


for(i = 1; i < argc; i++)
{
append_linked_list(list, (void *) argv[i]);
}
return 0;
}

Node *initialise_node(void)
{
Node *node;

node = (Node *) malloc(sizeof(Node));

return node;
}


LinkedList *initialise_linked_list(void)
{
LinkedList *list;

list = (LinkedList *) malloc(sizeof(LinkedList));
list->head = NULL;
list->tail = NULL;

return list;
}

Node *append_linked_list(LinkedList *list, void *data)
{
Node *newNode = initialise_node();

newNode->data = data;
newNode->prev = list->tail;
list->tail->next = newNode;
newNode->next = NULL;

return newNode;

}

最佳答案

Access not within mapped region at address 0x8

表示(如预期)您访问不在映射段中的地址 0x8。这通常意味着您访问一个 NULL 的结构指针。

使用调试信息重新编译(例如 flas -ggdb)

你得到:

==7797== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==7797== Access not within mapped region at address 0x8
==7797== at 0x4005CF: append_linked_list (delme.c:66)
==7797== by 0x40052C: main (delme.c:33)

它直接为您提供导致错误的行,即(如注释中指出的):

list->tail->next = newNode;

0x8 值来自于 Node 结构内的 next 是 8 个字节,因此 &((Node *)NULL)->next 是 0x8

关于c - 错误: "Access not within mapped region at address" (Valgrind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53241180/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com