使用__si​​ngle_client_alloc找到了一些旧代码-如何恢复它?

时间:2019-04-04 18:49:44

标签: c++ gcc gcc7 gcc3

我在网上找到了一个想要使用的旧软件包。头文件之一包括以下几行:

#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));}

仅对它们进行注释并恢复为默认的newdelete行为是否安全?还是这些除了使代码更节省内存外,还需要做一些实际的事情?

基本上,此代码是否有修复程序,以便它可以在最新的GCC版本下运行?

0 个答案:

没有答案