编译我试图编译this source在GCC 4.8.1:代码失败在G ++ 4.8
g++ -std=c++11 -D DCACHE1_LINESIZE=64 lockfree_rb_q.cpp -lpthread -o
lockfree_rb_q.exe
但我得到一个编译器错误,我不明白:
lockfree_rb_q.cpp:171:22: error: '::memalign' has not been declared
thr_p_ = (ThrPos *)::memalign(getpagesize(), sizeof(ThrPos) * n);
问题的代码行是:
ptr_array_ = (T **)::memalign(getpagesize(),Q_SIZE * sizeof(void *));
我知道什么是memalign
,什么是对,但在这个源代码中,我不知道为什么作者在memalign
之前添加了::
。这有什么用途?我不知道我可以使用哪些关键字来自己搜索这些信息。
谢谢,我真的在MinGW,这可能是我包括malloc.h仍然无法编译的原因! – barfatchen
AFAICT,'memalign()'被弃用,'posix_memalign()'不是。在某些情况下,可能需要页面对齐的内存而不是默认对齐。 – Hasturkun
MinGW在Windows平台上可能不支持。如果'_aligned_malloc'可用(就像它在Microsoft的C运行时库中一样),那么可以使用它。否则,您将需要编写自己的实现。这是相当简单的,只是'malloc'的简单包装。 –