文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>gcc支持c++的创建和删除自由内存的“new

gcc支持c++的创建和删除自由内存的“new

时间:2006-07-19  来源:paniven

gcc支持c++的创建和删除自由内存的“new"和”delete"运算符吗?

 
  问题: 在build我的程序时,出现以下错误: 
arm-elf-ld -EL -T..\..\..\targets\at91\targets\ldscript  -L..\..\..\Build\xgcc-arm- 
elf\arm-elf\lib\arm-inter 
             -LD:\EmbestIDE\Build\xgcc-arm-elf\lib\gcc-lib\arm-elf\3.0.2\arm-inter - 
o.\debug\simple_iden0.elf .\debug\cstartup.o 
             .\debug\simple_iden0.o ..\..\..\Targets\at91\drivers\lib_drv\arm- 
inter\lib_drv_32.lib ..\..\..\Targets\at91\parts\r40807\arm-inter\r40807_lib32.lib 
             -lm -lc -lgcc 
.\debug\simple_iden0.o: In function `Initialization()": 
.\debug\simple_iden0.o(.text+0x634): undefined reference to `operator new[] 
(unsigned long)" 
.\debug\simple_iden0.o: In function `Empty()": 
.\debug\simple_iden0.o(.text+0x6bc): undefined reference to `operator delete[] 
(void*)" 
.\debug\simple_iden0.o(.text+0x718): undefined reference to `operator delete[] 
(void*)" 
出错行是: 
void Initialization() 

  cat=new Star_Catalogue[MAX_CAT_NUM]; 
... 
... 
void Empty() 

delete[] cat; 
for(int i=0;i delete[] guide_cat_info.m_guide_cat[i]; 

请问gcc支持c++这种格式吗? 
GNU链接器几个开关项的顺序我是这样排的:-lm -lc -lgcc,应该没错吧 
 
  回答: 添加-lstdc++开关选项,这是连接C++语法支持所需要的。   

 

在keil for Arm中,在link中添加-lstdc++开关选项,即可使用new和delete运算符

不过自己也可重载这2个运算符,注意必须在cpp文件中!!!

//
void * operator new (size_t size)
{
void * ptr;
  ptr = (void *)malloc(size);
  if (!ptr) return ptr;
  memset(ptr, '\0', size);
  return ptr;
}


void  operator delete(void * obj)
{
  free(obj);
}
//

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载