![]() |
1
3
文字字符串在编译时存储在程序映像的.data节中。.data节通常映射到只读内存中,因此不能像.code节那样损坏它。可以使用Visual Studio附带的dumpbin.exe查看Windows exe/dll的.data部分。 没有简单的方法来破坏这个文字,如果你修改了它存储的内存页的许可,就可以做到这一点,但是你必须明确地使用一个OS API,而不是一个C++ API。编译时硬编码到机器代码中的地址是一个相对偏移量(如果内存为我服务,则是到数据段的基部)。这个偏移量被添加到操作系统加载程序提供的基址上。 如果堆栈损坏,则可能导致基址无效,因此添加偏移量时,文字看起来已损坏。 |
![]() |
2
4
不,在这种情况下,字符串文本不会损坏,因为它们不会被写入。 但是:如果您不锁定/同步该输出流的使用,您可能会看到混合的输出 相似 腐败。 |
![]() |
3
3
字符串文本通常存储在进程内存的只读部分中,在代码中,您不会(也不应该)对它们进行写入。它们被用来构造一个新的字符串,并将这些文本的内容复制到其中。 如果你在写那些文字的内存地址,你会知道的:)(也就是说,它通常会使程序崩溃) |
![]() |
TheKing · 为什么数组的地址可以有负值? 3 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |
![]() |
joe · 一页可以同时在两个工作集中吗? 7 年前 |
![]() |
Jaques · “.exe”已触发断点 7 年前 |
![]() |
adn bps · 在函数中修改变量的高效内存方法 7 年前 |
![]() |
Gauraang Khurana · C语言中分段错误的不稳定行为 7 年前 |
![]() |
Rajesh K · 如何查找设备中存在的广告垃圾? 7 年前 |