原创 在GCCAVR C++中如何重载new

2008-5-7 23:07 3411 4 4 分类: MCU/ 嵌入式
在GCCAVR C++中如何重载new,delete---对C说拜拜
雁塔菜农 发表于 2005-5-30 3:06:00


在GCCAVR C++中如何重载new,delete---对C说拜拜
mood25.gif hotpower 发表于 2005-1-31 00:24 AVR 单片机 ←返回版面 profile.gif fav.gif edit.gif举报该贴


在GCCAVR C++中如何重载new,delete

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


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

应用:
inline String::String(const char * str)
{
  if (!str) {
    _size = 0;
    _string = 0;
  }
  else {
    _size = strlen(str);
    _string = new char(_size + 1);
    strcpy(_string, str);
  }
}

inline String & String::operator = (const char * s)
{
  if (!s) {
    _size = 0;
    delete _string;
    _string = 0;
  }
  else {
    _size = strlen(s);
    delete _string;
    if (_size == 0) _string = 0;
    else {
      _string = new char(_size + 1);
      strcpy(_string, s);
    }
  }
  return *this;
}


阅读全文(440) | 回复(0) | 引用通告(4) | 编辑
 




PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条