如何检查变量是否在 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]
这可能意味着您正在尝试在堆上分配的内存块之前或之后进行读取。
(虽然我的第一个想法是认为你的变量没有被初始化,但我并不知道这些神奇的数字代码)
你应该纠正这个错误!不要像你想要的那样避免它。
我有一个检查变量条件的代码。
有时这个变量在内存中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]
这可能意味着您正在尝试在堆上分配的内存块之前或之后进行读取。
(虽然我的第一个想法是认为你的变量没有被初始化,但我并不知道这些神奇的数字代码)
你应该纠正这个错误!不要像你想要的那样避免它。