当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·函数的指针问题    »显示摘要«
    摘要: 在mfc的消息映射里有这样的定义: typedef void (ccmdtarget:: * afx_pmsg) (void) 但我只要知道的朋友用c++的话告诉我就行了,这个ccmdtarget::放在一个函数指针前面表示什么意思? 我只知道如果没有类作用域符ccmdtarget::是定义一个afx_pmsg这样一个指向函数的指针,但加上后是起了什么限制作用呢...... ......
 ·關于dll的一個問題    »显示摘要«
    摘要: 各位大鳥: 在這里問一下關于dll調用的問題 在c/s架構中,dll是放在服務器端運行還是客戶端運行? 如果是放在服務器端的話﹐那么客戶端的調用是怎么處理的,是不是在 工程->引用項目 菜單中引用﹐還是另有方法?請多指教! 在線等!!!!!! ......


关于多线程、内存释放问题。

我在主线程函数中给char   *   p;  
  申请了一块内存:  
  p   =   (   char   *   )   malloc(   sizeof(   char   )   *   128   );  
  并把地址传给了多个子线程,我怎么才能安全释放这块内存呢?  
  基本代码如下:  
   
  char   *   p;  
  p   =   (   char   *   )   malloc(   sizeof(   char   )   *   128   );  
  strcpy(   p,   "abcdefg"   );  
  HANDLE   hThread;  
  DWORD   ThreadID;  
  hThread   =   CreateThread(   NULL,   0,   Threadfun,   (   PVOID   )p,   0,   &ThreadID   );  
  if(   hThread   ==   NULL   )   {  
        printf(   "Create   thread   error"   );  
  }  
  CloseHandle(   hThread   );  
  我如何释放这块内存呢?放在最后肯定不行!有什么方法告诉我子线程已经全部运行完?

NO.1   作者: diyzhao

可以   搞个全局计数   ,新建一线程,加一,一个线程结束,减一,然后判断当前是否是最后运行的一个线程,是,release   p

NO.2   作者: flyelf

在线程结束的地方释放  
  Threadfun(LPVOID   p)  
  {  
  ...  
   
  free((char*)p);  
  ...  
  }


    摘要: 我在delphi中调用mapx地图,其中一个图层我想让第二个字段自动标注在图上。怎么实现??我把第二个字段设成索引,没有用处,还是标注第一个。后来我在mapinfo中把第二个字段上移到第一个字段,才可以。可是这个办法在delphi作的应用程序中无法实现。怎么办?? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE