Нашел какой-то старый код с помощью __single_client_alloc - как мне его оживить? - PullRequest
1 голос
/ 04 апреля 2019

Я нашел в сети старый пакет, который хотел бы использовать.Один из заголовочных файлов содержит следующие строки:

#include "gcc_version.h"
#if GCC_VERSION>=3002
#define malloc_alloc __single_client_alloc
#include <ext/algorithm>
#include <ext/memory>
#else
#define __gnu_cxx std
#endif

Мой GCC_VERSION равен 7003, а __single_client_alloc, видимо, давно прошло.single_client_alloc также существовал некоторое время, но я не могу понять, существует ли он или нет, в каком заголовке он живет.

Похоже, что это единственные места, где он фактически используетсяследующие страшно выглядящие функции:

void* operator new(size_t s) { return std::malloc_alloc::allocate(s); }
void operator delete(void* p) { std::malloc_alloc::deallocate(p,sizeof(classname)); }

//and in another class
void* operator new(size_t, size_t n) { return std::malloc_alloc::allocate(total_size(n)); }
void operator delete(void* p) {  std::malloc_alloc::deallocate((otherclassname*)p,total_size(reinterpret_cast<otherclassname*>(p)->size));}

Безопасно ли просто комментировать их и вернуться к поведению по умолчанию new и delete?Или они делают что-то помимо того, что делают код более эффективным для памяти, и в этом случае мне нужно реальное исправление?

В основном, есть ли исправление для этого кода, чтобы он работал в последних версиях GCC?

...