EXC_BAD_ACCESS, when accessing the object pointed by the vec
EXC_BAD_ACCESS, when accessing the object pointed by the vector of pointers
我有一个指针向量。。
我想通过存储在std::vector中的指针来访问我的Image对象。迭代器找到我的对象后,我想访问/修改向量中指针所指向的Image对象的某些成员。
请帮忙!!
class Image;
typedef std::vector <Image*> VecImages;
typedef VecImages::iterator ImagesIter;
class My_Images
{
private:
VecImages m_Images;
public:
My_Images() {}
~My_Images();
void addImage(Image* img) {m_Images.push_back(img);}
Image* getImage(string& rID);
};
// get image method
Image* My_Images::getImage(string& rID)
{
ImagesIter foundImg = m_Images.begin();
while (foundImg != m_Images.end()) {
Image* img = *foundImg; ***<<<<----------- [EXC_BAD_ACCESS is reported here]***
const string &strID = img->get_strRId();
if (strID == rID) {
return (*foundImg);
}
++foundImg;
}
return NULL;
}
// get-id method
const string& Image::get_strRId(void) {return m_strRId;}
// copy constructor
Image::Image(const Image& _src)
: m_strRId(_src.m_strRId)
{}
我还有一个名为builder的类。。。然后我调用addImage()方法,如下所示。。。My_Images*m_Images;(我创建了这个"新")Image*currImg=新图像;currImg->setName("ABC")。。。并且在currImg上调用了其他几个"set"函数(主要设置std::string)。
然后我使用下面的调用将它添加到向量中。
m_images->addImage(currImg);
一旦它被存储在向量中,我就放弃了它的所有权。currImg=NULL;
template <class _Type>
_Type* ChAutoPtr<_Type>::giveUpOwnership()
{
#ifdef VERIFY_WITH_SHADOW_STACK
// Check to see if the last auto-ptr is the one that is being
// given up!!!
if (m_pInstance != NULL)
{
void* pTop = g_cleanupStackShadow.top();
ChASSERT(pTop == m_pInstance);
g_cleanupStackShadow.pop();
}
#endif /* _DEBUG */
_Type* pTmp = m_pInstance;
m_pInstance = NULL;
return pTmp;
}
EXC_BAD_ACCESS意味着您(1)将未初始化的对象添加到向量中,或者(2)它的寿命很短,并且在调用getImage()之前就不存在了。您可以尝试启用NSZombies或验证添加到矢量的图像的寿命和范围。最好尝试使用智能指针(例如shared_ptr)。
相关文章:
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- 当覆盖存在时调用基本虚拟"binded to object"函数
- Doees the 'this' 指针参与虚函数的多态行为
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- 您将如何连接"on the fly"文本+整数并将其传递给函数?
- C++将派生类转换为基类时'object slicing'期间发生的情况
- 如何理解 C++17 标准参考中的 [intro.object]/3? N4659 的
- "Cannot convert Python object argument to type '<typename>'" - 使用 Cython 包装 C++ 类时出错
- 如何理解"Temporary objs are destroyed as the last step in evaluating the full-expression"?谁能用一些简单的例子来说明这
- 使用 object 中的方法调用带有 std::bind 和 std::function.target 的 C 样式函数
- 如何解决C++中声纳库贝静态代码分析错误"Explicitly define the missing copy constructor, move constructor .."
- 当我们在 C++ 中说"initialize the object"时,它实际上意味着什么?
- 如何修复警告"the compiler can assume that the address of 'object' will never be NULL"
- 为什么 malloc(0) 在"Inside the C++ Object Model?"中有用
- EXC_BAD_ACCESS, when accessing the object pointed by the vec
- 为什么在返回子对象时"that is the complete object of a subobject"延长对象的生存期?
- 收到错误"The SELECT permission was denied on the object ...."以及"The cursor was not declared."
- "size of the largest possible object on the target platform" size_t
- 名称查找是否应该"in the class of the object expression"查找该类的成员?