Windows 正在读取未分配的内存

Windows 正在读取未分配的内存,windows,visual-c++,heap,heap-memory,heap-corruption,Windows,Visual C++,Heap,Heap Memory,Heap Corruption,我有一个类对象,它在它的构造函数中创建了一个神奇的单词,我检查它以确保我真的构建了这个对象。很少在我不创建对象时,内存没有分配,当我试图访问成员时崩溃。如果我捕获此时生成的SIGSEGV并返回false,这样我就不允许我的程序继续使用该对象,这样可以吗?我会破坏记忆吗?我会尝试访问抛出SIGSEGV的成员,捕获它并告诉我程序不要继续处理这个对象。这有什么问题?为什么我可以这样做?或者我为什么不能这样做?我不会写任何东西,只是试着去阅读 蒂亚 我想是XY问题。为什么您不知道对象是否已创建?你必须有

我有一个类对象,它在它的构造函数中创建了一个神奇的单词,我检查它以确保我真的构建了这个对象。很少在我不创建对象时,内存没有分配,当我试图访问成员时崩溃。如果我捕获此时生成的SIGSEGV并返回false,这样我就不允许我的程序继续使用该对象,这样可以吗?我会破坏记忆吗?我会尝试访问抛出SIGSEGV的成员,捕获它并告诉我程序不要继续处理这个对象。这有什么问题?为什么我可以这样做?或者我为什么不能这样做?我不会写任何东西,只是试着去阅读


蒂亚

我想是XY问题。为什么您不知道对象是否已创建?你必须有一个指向对象的指针,如果没有指向的对象,指针的值是多少?这不是我正在考虑的解决方案,它是一个非常古老的代码库,并以这种方式解决了问题。所以我只想确保这一切都正常。还有,为什么我不知道我是否分配了内存,我只是确保内存已分配。我知道,但我想确定一下。如果你在尝试读取时得到了SIGSEV,那么除了你没有捕获错误的程序状态之外,没有任何东西会被破坏。如果您发现错误并停止尝试读取,您不会损害任何外部内容。不过,即使你只是在阅读,这也不是特别好的做法。如果您不知道指针引用的是什么,那么您就不知道您正在阅读的内容是否是您想要阅读的内容。在阅读之前,你应该知道你在引用什么。@JimMischel谢谢你的回复!所以,如果我尝试读取并捕获SIGSEGV,如果它被抛出并停止,不读取,但继续做其他事情,那么我在程序内外都是安全的?是的。尝试阅读,捕捉异常,然后继续。