-1
这个功能非常混乱,它会在我的测试仪上导致分段错误,有什么方法可以改善它吗?它应该采用sku参数,它是Product对象的一个属性,并将其与库存数组中的元素(其中包含指向Product的指针并且大小为50)匹配,如果发现我应该返回指针。函数返回指针C++导致的分割错误?
Product* Supplier::getProduct(const string &sku)
{
bool found = false;
int counter =0;
Product* ret= new Product();
while (found =false && counter< inventory.size())
{
if(inventory[counter] && sku == inventory[counter]->getSKU())
{
found = true;
ret = inventory[counter];
}
counter++;
}
if (found ==false)
{
cout << "not found" << endl;
}
return ret;
}
而(发现= FALSE ..)应同时(发现==假的...) – Inisheer
你的内存泄漏。您创建一个'产品'的实例,但是当在库存中找到一个项目时它永远不会被删除。 –
为什么不彻底摆脱'found',一旦找到它就返回结果?并摆脱那个'新';它导致内存泄漏。返回'nullptr',或者抛出异常,如果没有找到。 –