Спасибо за помощь, ребята ... помогли в моем случае (OpenCascade src / Image / Image_PixMap.cxx, OSX10.5.8 PPC)
В сочетании с ответами, приведенными выше, это может спасти кого-то от копания или вселить надежду, если он не особенно знаком с malloc и т. Д.:
Довольно большой проект, который я создаю, имел только одну ссылку на posix_memalign, и оказалось, что это было результатом множества условий препроцессора, которые не включали OSX, но DID включали BORLANDC, что подтверждает то, что другие предлагали об этом в некоторых случаях безопасно использовать malloc:
#if defined(_MSC_VER)
return (TypePtr )_aligned_malloc (theBytesCount, theAlign);
#elif (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 1)
return (TypePtr ) _mm_malloc (theBytesCount, theAlign);
#elif defined(__BORLANDC__)
return (TypePtr ) malloc (theBytesCount);
#else
void* aPtr;
if (posix_memalign (&aPtr, theAlign, theBytesCount))
{
aPtr = NULL;
}
return (TypePtr )aPtr;
#endif
Итак, это может быть так же просто, как просто использовать malloc, как предлагали другие.
например. здесь: перемещение __BORLANDC__
условие выше __GNUC__
и добавление APPLE :
#elif (defined(__BORLANDC__) || defined(__APPLE__)) //now above `__GNUC__`
ПРИМЕЧАНИЕ: я НЕ проверил, что BORLANDC использует 16-байтовое выравнивание, как кто-то из указанных выше OS X. Также я не проверял, что PPC OS X делает. Однако такое использование предполагает, что это выравнивание не особенно важно. (Здесь мы надеемся, что это сработает, и что это может быть так же легко для вас, поисковики!)