NDK - 扩展一个类并使用指向数组的指针会导致段错误

时间:2012-09-17 20:12:34

标签: c pointers crash android-ndk

//我的结构/类

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

1 个答案:

答案 0 :(得分:0)

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

第1行将分配大小为size的内存:size是什么? 第二行将覆盖指向新分配的内存的指针并替换指针:您可能希望将内存texture的内容复制到。