这是从我的previous question开始的一个后续操作,虽然这是关于其他内容。受其他正在运行的应用程序影响的应用程序结果
我一直有一个问题,出于某种原因,我从一个进程传递给另一个进程的消息只显示第一个字母,在本例中为“M”。
我的应用程序基于MSDN sample,所以为了确保我没有遗漏某些东西,我创建了一个单独的解决方案,添加了MSDN示例(不需要为我的需要做任何更改),毫不奇怪它工作正常。
现在,对于奇怪的位,当我运行MSDN示例运行(如在调试中)并运行我自己的应用程序时,文本打印出来没有任何问题。第二我运行我自己没有原始MSDN示例打开它无法正常工作,只显示“M”。
我看过调试器,似乎没有注意到任何可疑(这是一个稍微有点过时的图片,我已修复数据类型不一致)。
任何人都可以提供一个解决方案,这样做呢?我从来没有遇到过这样的事情。 要查看我的源代码,只需查看我在问题顶部发布的链接就会更容易,我发布它的次数没有意义。
谢谢你的帮助。
编辑:
经过进一步调查,几乎好像我自己的应用程序以某种方式读取意外的其他应用程序的内存。如果我没有通过生成器窗口发送消息来“轮询”消息,它仍然会收到消息,这意味着它正从另一个(MSDN)进程读取消息,这也解释了为什么只有在运行MSDN时它才能正常工作先抽样。
我仍然不明白为什么会发生这种情况,如何阻止它,以及如何解决它,这可能是我遇到的最奇怪的事情。
****解决方案:****
虽然它不解决这两个应用程序的互相影响我设法解决这个问题文本的问题。我没有将这些必要的#include添加到这两个文件中,添加了这个修复,没有任何警告。
它总是小事情。
一个进程无法读取另一个进程的内存;它们存在于不同的虚拟记忆空间中,所以这个假设是不合理的。更有可能的是,您有一个非确定性错误,其行为取决于某些未初始化数据的值或由无效指针引用的数据。这些值将取决于启动时的内存环境,并且通过影响环境,代码可以运行在不同的物理内存区域,因此可以在不同的值上运行。您可能会发现,出于同样的原因,调试器环境之外的行为是不同的。 – Clifford 2010-04-18 16:30:33