2011-08-31 27 views
0

假设某些内存位置0xF0000包含四个字符串"four"char * from memory address

所以这是有效的:

char *mem = (char*) 0xF0000; 

,然后是MEM [0] == 'F'?

+0

你的意思是,“然后是'mem [0] == f'”? – razlebe

+0

是.............. – yolo

+0

谢谢......编辑。 – razlebe

回答

3

当然是。如果内存映射的权限正确(写入),它应该与操作系统无关。

一个简单的测试方法是使用gdb。你可以打破并改变mem的值,使它指向一些内存,就在一条指令试图改变它之前。

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

5

是的,它是有效的,如果0xF0000是四个字符的字符串的起始地址“四个一”

1

是的。如果您使用malloc或将其分配到堆栈上,则它应该按预期行事。如果您刚刚选择了该地址,请注意,一般情况下,它可能随时被其他内容覆盖。

+2

如果你只是来自bootloader,'unsigned char * videoram =(unsigned char *)0xb8000;'让你在屏幕上写... –

+0

有趣,但只是试图找到smbios入口点结构的地址。 – yolo