如何检查变量是否在 C 中的内存 0xfdfdfdfd 中?

How do I check if a variable is in memory 0xfdfdfdfd in C?

我有一个检查变量条件的代码。

有时这个变量在内存中0xfdfdfdfd,当然不能从那里读取。

如果变量是null,我会

 if(!variable)
 {
     //report error or skip...
 }
 else 
 {
     //do stuff with the variable...
 }

但显然 0xfdfdfdfd 意味着有一个变量,我就是无法访问它。

有没有我可以使用的检查(比如 null),这样我就不会在无法访问变量时试图弄乱它?

0xfdfdfdfd 是您的编译器在调试中引入的一个值,因此您可以看到您的程序在哪里仍然存在错误。你要么没有正确初始化这个变量,要么你确实删除了它并尝试访问它。不要检查这个值,而是正确调试和修复你的程序。

0xFDFDFDFD 是一个用于帮助调试的神奇数字。您可以在维基百科上找到参考 Magic Numbers, and also useful information in this SO answer and in this other SO answer

你可以看到:

FDFDFDFD Used by Microsoft's C/C++ debug malloc() function to mark "no man's land" guard bytes before and after allocated heap memory[15]

这可能意味着您正在尝试在堆上分配的内存块之前或之后进行读取。

(虽然我的第一个想法是认为你的变量没有被初始化,但我并不知道这些神奇的数字代码)

你应该纠正这个错误!不要像你想要的那样避免它。