我想在mac上編譯一個工具包。它有一個對malloc.h的memalign函數的引用,但是我能找到的唯一關閉函數是posix_memalign。所以我想把posix_memalign換成memalign。如何包裝posix_memalign(在mac上編譯舊的代碼庫)?
我有點困惑如何做到這一點(因爲無效*和無效**指針):
爲posix_memalign簽名是
int posix_memalign(void **memptr, size_t alignment, size_t size);
和memalign可簽名是:
void *memalign(size_t blocksize, size_t bytes);
任何指針非常讚賞。 (雙關語跛意外:)
感謝
此包裝製成的功能正確編譯。但是運行該工具包時,我會遇到段錯誤。我不確定它是因爲這個包裝還是其他。我正在調查。如果您好奇,我正嘗試在osx lion上編譯[SVDFeature toolkit](http://svdfeature.apexlab.org/wiki/images/8/85/Svdfeature-1.2.tar.gz)。 – user1521607 2012-08-01 18:53:29
@ user1521607 posix_memalign要求對齊是2的冪和sizeof(void *)的倍數,但memalign只需要它是2的冪。我懷疑傳入的對齊是2的冪,但小於sizeof(void *)。如果是這種情況,請嘗試將sizeof(void *)加起來。你也可以用posix_memalign的結果分配errno。 – 2012-08-01 22:06:40