This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

C++ method call bad jump address

Hi,

We have a c++ class that cannot be compiled anymore since the compiler generates a "Class too large" message.

I decided to remove objects from it and to access them as pointers, ie:

I changed from:

class controller
{
   Class1 Obj1;
   Class2 Obj2;
   Class3 Obj3;

   /* and methods accessing these objects */
   void method() {
     Obj1.myMethod();
     ...
   }
}


to

class controller
{
   Class1* pObj1;
   Class2* pObj2;
   Class3* pObj3;

   /* and methods accessing these objects */
   void method() {
     pObj1->myMethod();
     ...
   }
}

Class1 Obj1;
Class2 Obj2;
Class3 Obj3;
are then declared in another file and I called the following function at the very beginning to initialize my pointers:

Controller:InstallObjects()
{
   pObj1 = &Obj1;
   pObj2 = &Obj2;
   pObj3 = &Obj3;
}

So everything should work as before and the "class too large" error should be removed.

What happened is:

  • the error message was well removed
  • BUT my application reseted !!!

I am sure that InstallObjects is called before anything is accessed so pObj1, pObj2 and pObj3 are initialized and cannot be NULL

I followed the execution: pObj1->* calls are ok but at some point a pObj1->a_method() is not called ! The address seems to be bad (I cannot confirm as I don't have any emulator and I'm just debugging using printfs). My compiler version is 6.18 (the latest). I suspect a compiler or linker error...

Thanks a lot for your precious help,

Pierre

0