1.
char *pp;
pp = NULL;
delete [] pp;这种做法是错的吗?
2.
几个关于动态连接库的问题?
1.如果只hmod = ::LoadLibrary("Dll4.dll");
没有::FreeLibrary(hmod);会有什么后果?
2.如何手动建简单的dll,不用应用程序向导?

解决方案 »

  1.   

    1.是错的!
    没分配内存就删除,会造成崩溃的!应该这样if( pp )
    delete [] pp;2我理解,不会有什么严重的后果,
    后果与你的DLL的效用有关!!
      

  2.   

    1.
    char *pp;
    pp = NULL;
    delete [] pp;这种做法是错的吗?
    2.
    几个关于动态连接库的问题?
    1.如果只hmod = ::LoadLibrary("Dll4.dll");
    没有::FreeLibrary(hmod);会有什么后果?
    2.如何手动建简单的dll,不用应用程序向导?
    1.是对的。
      任何时候,对NULL可以安全进行delete
    2.(1)没有::FreeLibrary(hmod)会导致内存泄露
      (2)在VC6.0中,不使用向导不能创建工程。
      

  3.   

    1、对NULL指针可以安全Delete掉的,所以我们在编程的时候都要时刻注意把释放掉的指针设置为NULL;
    2、没有::FreeLibrary()的话,DLL就放在内存中了,只有等你机器下次启动的时候把它从内存中卸掉