这是我previous question的后续内容,尽管这是关于其他事情的。
我遇到了一个问题,由于某些原因,我从一个进程传递到另一个进程的消息只显示第一个字母,在本例中为“M”。
我的应用程序基于MSDN sample,以确保我没有遗漏某些内容,我创建了一个单独的解决方案,添加了MSDN示例(不需要对我的需求进行任何更改),并且毫不奇怪它工作正常。
现在对于奇怪的一点,当我运行MSDN示例运行(如在调试中)并运行我自己的应用程序时,文本打印出来没有任何问题。第二个我自己运行我没有原来的MSDN样本打开它无法工作,只显示“M”。
我查看了调试器并且似乎没有注意到任何可疑的内容(这是一个稍微过时的图片,我修复了数据类型的不一致)。
任何人都可以为此提供解决方案吗?我以前从未遇到过这样的事情。 要查看我的源代码,只需查看我在问题顶部发布的链接就更容易了,我发布两次没有任何意义。
感谢您的帮助。
修改
经过进一步调查后,我自己的应用程序似乎偶然地以某种方式读取其他应用程序内存。如果我甚至没有通过生产者窗口发送它来“轮询”该消息,它仍然会收到消息,这必须意味着它正在从另一个(MSDN)进程读取它,这也可以解释为什么它只能在我运行MSDN时正常工作首先是样品。
我仍然不明白为什么会发生这种情况,如何阻止它以及如何解决它,这可能是我遇到过的最奇怪的事情。
****解决方案:****
虽然它没有解决两个应用程序相互影响的问题,但我已设法修复了文本问题。我没有在两个文件中添加必要的#include,添加此修复它没有任何警告。
这总是小事。
答案 0 :(得分:1)
在“内存查看器”窗口中查看pBuf
。字符串查看器将在第一个空终止符处终止,但超出的可能是有趣/有用或提供线索。