C++调用两次会导致访问冲突

C++ call twice cause access violation

本文关键字:访问冲突 两次 调用 C++      更新时间:2023-10-16

第一次尝试调用that->getValue()看起来不错,但只是下面的一行(while循环的头部)给了我getValue方法中的错误"访问冲突"。

if(first != 0){
  listElement *that = first;    
  cout << "add: " <<    that->getValue() << " | " << value  << endl; 
  while(that->getValue() < value) {..}
}

我是否在通话期间在任何地方编辑该值?get 方法仅包含"返回值"...。

显而易见的解释是,在此代码中

while(that->getValue() < value) {..}

{..}内,您正在执行that = that->next;并将that设置为空指针。

您需要在while循环中添加that != NULL测试,以防止在找不到符合搜索条件的项目的情况下到达列表末尾。

while(that != NULL && that->getValue() < value)

如果您包含所有代码会有所帮助,因为代码的关键位似乎在{..}块中!