所以我有一个奇怪的问题,我希望有人能解释一下......我有以下代码:
#include <unistd.h>
#include <mcheck.h>
#include <pthread.h>
static void *run(void *args)
{
sleep(1);
return NULL;
}
int main()
{
mtrace();
pthread_t thread;
pthread_create(&thread, NULL, run, NULL);
pthread_join(thread, NULL);
return 0;
}
我编译我用这两种方式编译它:
g++ -static program.cpp -lpthread
和
g++ program.cpp -ltpthread
当我查看 mtrace 的输出时(在我的例子中是 mem.out)
当我使用该-static
选项时,我看到以下内容,mtrace
报告:
Memory Not freed:
__________________
Address Size Caller
0x085ac350 0x88 program.cpp:0
但是当我排除该-static
选项时,mtrace
报告光荣:
No memory leaks.
那么关于这里发生了什么的任何想法?