所以,我正在使用C++和openFrameworks.有时当我尝试获取指向类实例的指针时,通常我得到类似的东西(00000000038468B0).或者当它不存在时,它返回一个nullptr.一切都是编程的,因此值可以是nullptr,也可以是指实际的实例.
我这样做总是将指针的值设置为头文件中的nullptr.
someClass* someInstance = nullptr;
当我删除一个实例时,我总是在对该实例的任何引用中将其设置回nullptr.
但有时指针返回DDDDDDDDDDDDDDD,这意味着应用程序将崩溃,因为它会通过我的安全if if语句,在使用它之前检查指针是否为nullptr.
任何人都知道DDDDDDDDDDDDDDD是什么?我似乎无法找到任何有关它的信息......
根据这个页面:Win32 Debug CRT Heap Internals
记住每个填充模式意味着什么的助记符:
新分配的内存(0x C D)是清洁内存.
free()d内存(0x D D)是死记忆.
保护字节(0x F D)就像你的记忆中的围栏一样.
因此,假设您的平台是Win32,那么就会释放指针所在的内存.
它表明您一直在访问无效内存,在这种情况下您将有未定义的行为.