修改数据时出现C-segfault

时间:2015-02-22 03:23:20

标签: c pointers memory segmentation-fault

关于我之前关于显示特定数据地址内容的问题,我现在正试图修改各个地址的内容。这似乎是一个足够简单的任务,但每次尝试都会遇到段错误。我使用以下功能:

int mem_set(Cmd *cp, char *arguments)
{
    int address = 0, value = 0;
    char *location;

    if(sscanf(arguments, "%x %x", &address, &value) == 2)
    {
        location = (char*)address;
        *location = value;
    }
    else printf("Invalid input.\n");
    return 0;
}

我应该能够更改表格中的项目(在此文件中)来自''到' x'通过查找其地址并将其替换为正确的十六进制值,但是当它到达*location = value;时我得到一个段错误。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在为此处的指针指定一个整数

location = (char*)address;

应该是

location = (char*)&address;

你需要取address的地址而不是它的价值。

这是否会执行您要执行的操作,是另一回事,但这是您的程序调用未定义行为的原因,这可能会导致SEGMENTATION FAULT。