关于我之前关于显示特定数据地址内容的问题,我现在正试图修改各个地址的内容。这似乎是一个足够简单的任务,但每次尝试都会遇到段错误。我使用以下功能:
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;
时我得到一个段错误。有什么想法吗?
谢谢!
答案 0 :(得分:0)
您正在为此处的指针指定一个整数
location = (char*)address;
应该是
location = (char*)&address;
你需要取address
的地址而不是它的价值。
这是否会执行您要执行的操作,是另一回事,但这是您的程序调用未定义行为的原因,这可能会导致SEGMENTATION FAULT。