char数组是否初始化为:
char foo[] = {0x31, 0x32, 0x33}; //123
Run Code Online (Sandbox Code Playgroud)
得到一个空终结符添加到它的末尾所以内存数据foo看起来像0x31323300?或者这只是将0x313233写入内存?此外,无论这种初始化方法如何,编译器都将foo视为字符串文字?
我在 MSDN 上阅读了有关 PE 格式的文档,其中指定了:
加载到内存时图像第一个字节的首选地址;必须是 64 K 的倍数。 DLL 的默认值为 0x10000000。Windows CE EXE 的默认值为 0x00010000。Windows NT、Windows 2000、Windows XP、Windows 95、Windows 98 和 Windows Me 的默认值为 0x00400000
我不太明白这一点。什么是“首选地址”?在创建新进程/加载可执行文件时,windows 是如何使用这个字段的?