2016-09-19 1 views
0

数日間のテストの後、ランタイムパッチ機構patch_functions.ccは運用環境で使用するのが安全ではないことがわかりました。
HeapAlloc()とHeapFree()を除いてVS2010プロジェクトではうまくいくようですが、未解決の問題Open IssuesのためVS2015プロジェクトでは使用できません。 窓のreadmeはtcmallocを使用するには、この別の方法を説明しますGoogleのTCMallocライブラリを安全にリンクする方法


上記のすべてに代わるものでは静的にlibcを使用してアプリケーション をリンクして、tcmallocとのmalloc関数を置き換えることです。これにより、 はプログラムを正常にビルドしてリンクすることができます。 tcmallocサポート は後処理ステップに入ります。これは上記の 技術(実行時のパッチ適用に依存しますが、本来は が壊れています)よりも信頼性がありますが、これ以上設定する必要があります。詳細については、残念ながら、提供リクは、urechableあるGoogleはグループを閉じていたようだ https://groups.google.com/group/google-perftools/browse_thread/thread/41cd3710af85e57b


参照してください。

誰かが私にこのことをどうやって説明できますか?

答えて

1

tcmallocを使用して、独自にmallocを書いてみることを前提としています。

ですから、を定義し、(翻訳単位別名.Cを作成したり、使用して)、独自のものをリンクし、この

#ifdef __cplusplus 
extern "C" { 
#endif 

#include <stdlib.h> 

void* malloc(size_t size) { 
    return tcmalloc(size); 
} 

//Also define a free if memory which has been allocated by tcmalloc 
//needs to be freed by a special function 
// Like 
/* 
void free(void* ptr) { 
    if (ptr) { 
     tcfree(ptr); 
    } 
} 
*/ 

#ifdef __cplusplus 
} 
#endif 

ような何かを書く問題がある持っている:あなたの建物のシステムまたはリンカーに応じて、それは、約二重の記号について言及するかもしれません。 libcs​​ mallocを何とか除外したり、libcを自分で変更しなければなりません。

+0

便利ですが、完全な回答としてはあまり意味がありません –

関連する問題