//我的结构/类
class ImgObj{
public:
unsigned int *textu; //image
};
//我的基本功能的一般对象
class Aobj {
protected:
ImgObj *_obj;
public:
Aobj();
virtual ~Aobj();
ImgObj *getB(int p);
void add(unsigned int *texture);
};
//Here a create an array of that structure
void Aobj::setFrameCount(int q) {
_obj = new ImgObj[q];
}
//Adding it
void Aobj::add(unsigned int *texture, int size)
{
counter++; (counter is 0, I didn't specify this but it is there)
_obj[counter-1].textu = (unsigned int *)malloc(size);
_obj[counter-1].textu = texture;
}
// Getting back the buffer
ImgObj *Aobj::getB(int p) {
return &_obj[p];
}
//Extending the main object with some other functions which are not present here
class Background : public Aobj {
public:
Background();
virtual ~Background();
};
// ---------------------------------
//我的主要测试 //我基本上是在分配图像并在循环中分配第二次之后 //它崩溃了
Main::Main()
{
// image bytes 11704 -> 77w * 38h * 4
unsigned int *texture = new unsigned int[11704]; //an example
//Now imagine I'm filling this array with an image...
int size = 11704;
Background *background = new Background;
background->setFrameCount(1);
background->add(texture, size);
unsigned int *testtex; //testing
while(true)
{
testtex = background->getB(0)->textu;
}
// When using this it crashes (the first time works fine, the second time crash)
}
答案 0 :(得分:0)
_obj[counter-1].textu = (unsigned int *)malloc(size);
_obj[counter-1].textu = texture;
第1行将分配大小为size
的内存:size
是什么?
第二行将覆盖指向新分配的内存的指针并替换指针:您可能希望将内存texture
的内容复制到。