【发布时间】:2014-03-26 02:23:03
【问题描述】:
我正在搜索 Contact 对象的向量(尽管对象的类型不应该影响任何东西),如果找到,则返回指向该对象的指针,否则返回 null。下面是代码:
Contact* searchByLastName(string lname) {
for (auto iter = LIST.begin(); iter != LIST.end(); ++iter) {
Contact c = *iter; //Dereference
if (lname.compare(c.getLastName()) == 0) {
return &c;
}
}
return NULL;
}
如果方法返回 NULL(即在 LIST 中找不到联系人),则代码可以正常工作。如果联系人在列表中,则程序会出现段错误。
我尝试使用 nullptr 代替 NULL 并返回 void 指针而不是 null 指针(如果结果不是 NULL/nullptr,则将 static_cast 返回到 Contact*)。
我不确定它为什么会出现段错误。我知道 NULL 在 C++ 中被定义为 0,但是使用 nullptr(应该只是 void* 类型的指针,对吗?)并没有停止段错误。
【问题讨论】:
标签: c++ pointers segmentation-fault