将segfault转换为空指针
segfault to a null pointer C++
WordBinaryTree::WordBinaryTree()
{
//RootNode is a private WordNode* of WordBinaryTree()
RootNode = 0; //just to set it to null...
}
void WordBinaryTree::AddNode(WordNode node)
{
//RootNode is WordNode*, should be null the first time through
WordNode* currNode = RootNode;
if (!currNode)
{
currNode = new WordNode();
currNode->Value = node.Value;
currNode->Word = node.Word;
RootNode = currNode;
return;
}
while (1)
{
if (currNode->Value > node.Value)
//other code here......
我不太确定我的代码到底出了什么问题。我在网上搜索过了,没有任何解决办法。WordNode是一个类型结构体,而RootNode只是一个指向它的指针。我从来没有给RootNode设置new,所以第一次运行时它只是一个空指针。然而,当我试图检查它是否为null(通过currNode)时,它一直出现false并说它不是null。因此,第一个if语句永远不会执行。当while循环中的if语句发生时,这会导致段错误,因为它试图从空指针中获取值。
为什么会发生这种情况?我试过valgrind,但它只是告诉我没有malloc/free/等。通过RootNode所在的地址。我知道!我试图使一个新的,如果它是空的(通过该if语句),但它只是不断出现为假,好像RootNode不是真的空。我该怎么做?
确保您之前已将RootNode
初始化为null:
WordNode* RootNode=NULL;
如果这样做,请确保此构造函数之前被调用过,并且您操作的是初始化实例
相关文章:
- 正在将指针转换为范围
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 运行时错误:引用绑定到类型为"int"的空指针
- Qt - 将空指针(原始数据)转换为 QImage 并将其显示在标签上
- 将多映射转换为空指针,然后转换回多映射
- 为什么要转换为空指针?
- 如何将空指针转换为类数组
- 将一对包含空指针的指针强制转换为一对其他类型的指针
- 指向布尔值的空指针的隐式强制转换
- 不带类型强制转换的空指针
- 理解将结构强制转换为空指针
- 空指针常量转换为右值
- 转换std::chrono::system_clock::time_point::min()为字符串时,无效空指针错误
- 将segfault转换为空指针
- 用于类型转换空指针的类型/类的向量
- 指针算术的空指针的类型转换
- 转换为空指针后从char数组读取int值
- 将整数数组强制转换为空指针-phread_create
- 将指向结构体或内存对象的空指针强制转换为新结构体