无效空指针- c++ - VS2010
Invalid Null pointer - C++ - VS2010
我得到一个Assertion failed
错误,说明Expression: invalid null pointer
,它指向c:program filesmicrosoft visual studio 10.0vcincludexstring line:930
。
void main(void)
{
// fillMap() fills map with data from txtfile and returns map<char,int>
map<char, int> myMap = fillMap("file.txt"); // <- takes a string
MyClass *myObject;
// Code reaches here fine
myObject= new MyClass(myMap); // this line causes the error
// Does not get to here
}
在导致错误的行上,我可以将构造函数()留空,只说ptr = new MyClass();
,仍然得到相同的错误。我想这和我的构造函数有关。
在MyClass中,构造函数定义为MyClass(char=' ', int=0)
。如果我不给他们值,然后我得到一个No default constructor
错误。
所以,有人能告诉我如何在Visual Studio 2010中跟踪此错误,或提供一个可能的解决方案,为什么我得到这些问题?
PS,它不允许我创建非指针的新对象,Error: No operator "=" matches these operands
。
谢谢你的帮助。
编辑:如果有帮助的话,这里是xstring: 中的第930行_Myt& assign(const _Elem *_Ptr)
{ // assign [_Ptr, <null>)
_DEBUG_POINTER(_Ptr); //930
return (assign(_Ptr, _Traits::length(_Ptr)));
}
基于崩溃发生在名为assign
的函数中的事实,我怀疑MyClass
(直接或间接)包含指针成员,但您没有正确定义赋值操作符(可能既没有定义复制构造函数也没有定义析构函数)。事实上,你写
它不允许我创建非指针的新对象,错误:没有操作符"="匹配这些操作数
如果你想创建这样的对象
MyClass myObject = MyClass(myMap);
上面的编译错误确实意味着没有找到合适的赋值操作符来将MyClass(myMap)
创建的临时变量赋值给myObject
。在本例中,
MyClass myObject(myMap);
应该可以编译(尽管它可能以同样的方式崩溃)。
如果没有看到所调用的构造函数的实际代码,就不可能确切地说出崩溃发生的原因。
相关文章:
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 如何在C++(VS2010)中设置超时读取USB端口?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- VS2010 C++ 调试托管 (C++/CLI) DLL
- 在VS2010上使用PCL 1.6.0的问题
- 在使用VS2010构建ACE和TAO(CORBA)时发生了许多错误
- LibVLC 的新手 - 在 VS2010 上试用 libVLC
- 提升 vs2010 上的进程错误
- 提升 ASIO 1.66 示例无法构建 - async_connect() 需要单个迭代器无法在 VS2010 上链接
- VS2010中的向量初始化
- 在vs2010中使用iostream时,出现错误C2039:'exit':不是"全局命名空间"的成员
- VS2010无法链接它应该构建的库
- 如何将字符串数组分成两个文件M C++98 / VS2010
- VS2010 和 VS2012 以及 C++11 错误 C2059:语法错误:"..."怎么走?
- 如何使用.bat文件在VS2010中添加环境变量
- error LNK2019 ARuco and OpenCV VS2010 c++
- 具有极其简单类的未解析外部符号(VS2010)
- VC++ dll 代码区域未更新:VS2010
- 将两个VS2010 C++项目构建到同一输出文件夹中
- VS2010: assert "vector iterators incompatible" in std::vector.clear()