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

Bru*_*her 2 c memory

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

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

如果变量为null,我会

 if(!variable)
 {
     //report error or skip...
 }
 else 
 {
     //do stuff with the variable...
 }
Run Code Online (Sandbox Code Playgroud)

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

有没有我可以使用的检查(比如null),所以当我无法访问它时,我不会尝试弄乱变量?

Ste*_*and 11

0xFDFDFDFD是一个用于帮助调试的神奇数字.你可以在wikipedia Magic Numbers上找到一个参考,也可以在这个SO答案其他SO答案中找到 有用的信息:

在那里你可以看到:

FDFDFDFD由Microsoft的C/C++调试malloc()函数用于在分配的堆内存之前和之后标记"无人区域"保护字节[15]

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

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

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


nvo*_*igt 6

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