所有的C运行时函数除signal外都能够在通过CreateThread创建的线程中正确的运行。然而,对某些CRT函数的调用,在线程终止时会引发小 小的内存泄露。例如:当调用strlen时并不会触发CRT线程在数据块中分配内存,而调用 malloc,fopen,_open,strtok,ctime,或者localtime则会在每个线程数据块中分配内存,这可能会引发内存泄露。
避免CreateThread引发泄露,大致有几种方法:
1. 使用_beginthread/_beginthreadex函数创建线程
2. 在线程函数return前,显示调用_endthread/_endthreadex函数
3. 在线程函数return前,显示调用_freeptd(NULL),此方法在C语言中有效
4. 使用/MTd或/MDd参数