版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
最近在用vs2010编译内存管理库tcmalloc时,碰到了两个问题记录一下
1.由于在vs2010中log2()还不是标准库函數,因此在编译的过程中会提示log2()未定义。于是就在使用该函数的sample.h中自己添加了一个log2()的实现log2(x)=log(x)/log(2),但是由于是要从dll中导出使用,所以该函数的聲明需要加上PERFTOOLS_DLL_DECL
->getenv()会导致程序卡住,由于在官方gibhub的issues中有提到过另外一个地方有getenv()引起的死锁于是按照那个方法,将getenv()改成TCMallocGetenvSafe()后问题解决,但是這个问题在其他同事的电脑上不出现并且,在我自己的电脑上也不是一直出现有时候也不会出现,具体原因现在未知可能跟初始化唍成的时机相关,在debug模式下程序运行速度较慢,可能更容易出现资源争用的情况