Я пытаюсь запустить пример кода из выровненного alloc :
#include <cstdio>
#include <cstdlib>
int main()
{
int* p1 = static_cast<int*>(std::malloc(10*sizeof *p1));
std::printf("default-aligned address: %p\n", static_cast<void*>(p1));
std::free(p1);
int* p2 = static_cast<int*>(std::aligned_alloc(1024, 1024));
std::printf("1024-byte aligned address: %p\n", static_cast<void*>(p2));
std::free(p2);
}
Мои компиляторы выдают мне эту ошибку:
$ g++-mp-8 main.cpp -std=c++17
main.cpp:10:38: error: no member named 'aligned_alloc' in namespace 'std'
int* p2 = static_cast<int*>(std::aligned_alloc(1024, 1024));
Я работаюс macOS High Sierra 10.13.6 и попыткой скомпилировать этот код с помощью Macport GCC 7.3.0, 8.2.0 и CLang (Apple LLVM версия 10.0.0), все они выдают одну и ту же ошибку.
Редактировать: Этоне работает ни с std::
, ни с подарком.
Edit2: я установил MacOS Mojave, и это не решило проблему.Я надеялся, что он переустановит набор инструментов macOS, но этого не произошло.Поэтому я не могу принять предоставленные ответы, пока не получу более конкретный.