-1

//我的结构/类

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)
     }
4

1 回答 1

0
_obj[counter-1].textu = (unsigned int *)malloc(size);
_obj[counter-1].textu = texture;

1st line will allocate memory of size size: what is size? 2nd line will override pointer to the newly allocated memory and replace the pointer: you probably wanted to copy the contents of the memory texture points to.

于 2012-09-17T20:20:02.527 回答