char *来自内存地址

时间:2011-08-31 12:36:04

标签: c char

假设某个内存位置0xF0000包含四个字符串"four"

这是有效的:

char *mem = (char*) 0xF0000;

然后是mem [0] =='f'?

3 个答案:

答案 0 :(得分:5)

是的,如果0xF0000是四个字符串“four”

的起始地址,则它是有效的

答案 1 :(得分:3)

当然可以。如果使用正确的权限(写入)映射内存,则它应该对操作系统没有任何影响。

测试此方法的简便方法是使用gdb。在指令尝试更改它之前,您可以中断并更改mem的值,使其指向某个内存。

特别是,不要尝试修改字符串文字(char *readonly = "mystr");

答案 2 :(得分:1)

是的。如果你使用malloc,或者在堆栈上分配它,那么它应该按预期运行。如果您刚刚选择了该地址,请注意,一般情况下,它可能会被其他任何时候覆盖。