我在主线程函数中给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 );
我如何释放这块内存呢?放在最后肯定不行!有什么方法告诉我子线程已经全部运行完?
可以 搞个全局计数 ,新建一线程,加一,一个线程结束,减一,然后判断当前是否是最后运行的一个线程,是,release p
在线程结束的地方释放
Threadfun(LPVOID p)
{
...
free((char*)p);
...
}