我写了一个dll 里面有一个自定义类,暂定为A
我导出函数的时候 我不想别人知道我A类中有什么内容
说我就写了一个函数void * create() 用来返回A类的指针
void * stcall create()
{
   A *temp = new A();
   return (void *)A;
}
然后我调用Create 的时候、。 多调用几次就会出现内存错误  但是我不调用就会正常。
然后我把A类所有内容都删除了。 再次调用 还是会报错。 这是为什么。 是编译器不知道A类的大小 
所以new的时候 申请的内存空间不足够么。之后。。 A类中我需要调用B类。 所以我弄了个局部变量 B* b=new B();
也是报内存错误。难道dll中不能再new自定义类么  求个例子。

解决方案 »

  1.   

    1、void * stcall create()
    是stdcall吧。2、 A *temp = new A();
       return (void *)A;
    new出来的是temp,返回的应该也是temp吧。3、B* b=new B();
    如果你又返回(void *)B,肯定又错了。
      

  2.   

    我写错了。。
    返回的是temp 不然也会报错的。。 
    B类我是在A类中的变量。所以并没有返回。
    还有一个 我只create() 2次以下没错误  3次会出现内存缓冲错误   3次以上会出现内存读取错误。
      

  3.   

    原则是 谁 new ,谁 delete。
    BOOL stcall create(A *pA )
    {
    if(pA) delete pA;
    pA = new A();
    return TRUE;
    }