2012-07-03 84 views
0

我正在使用Doug Lea's dlmalloc memory allocator。但是,當我使用它時,我會得到分割。如果我使用普通的malloc,我的程序運行良好。我記得我曾經讀過,你需要先調用dlmalloc的一些初始化函數來工作,但我現在不記得哪一個函數。我試圖看看這些評論來找出哪個功能,但仍然無法找到它。使用dlmalloc的segementation故障

+0

請顯示您的代碼。 –

+0

它是PARSEC的流體基準。 – pythonic

+0

你的程序是多線程的嗎? – dasblinkenlight

回答

3

從分配器的源代碼中的註釋:

胎面安全:不是線程安全的,除非USE_LOCKS定義非零

當USE_LOCKS定義,每個公共調用malloc的,免費等被鎖着。默認情況下,它使用普通pthread互斥鎖,win32臨界區或自旋鎖(如果可用於平臺),並且未通過設置USE_SPIN_LOCKS = 0禁用。

您需要使用USE_LOCKS編譯庫,否則可能會看到崩潰。

另一種可能性是,您的程序展示未定義的行爲,並不會導致經常帶來的後果malloc。例如,它可能會在某處分配一個字節,但該字節可能是內存塊的一部分,比您請求的內容塊大幾個字節。使用valgrind來檢查你的程序是否有「常規」malloc的內存錯誤,然後將它與自定義分配器連接起來。