以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  请教:关于返回值  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=39594)


--  作者:zhu_ruixian
--  发布时间:11/1/2006 10:45:00 AM

--  请教:关于返回值
const char *test()
{
     return "UNKNOWN";
}
void main()
{
const char* tmp=test();
//delete tmp;
}
上面的程序tmp为什么不用释放?当test调用完了以后,那"UNKNOWN"放在了那个地方?
--  作者:卷积内核
--  发布时间:11/1/2006 10:54:00 AM

--  
1、你没有new一个内存空间所以谈不上delete tmp.
2、"UNKNOWN"并没有以显示方式输出来啊,你仅仅把这个值放到tmp中了而已。
3、不知道你写上面的东西是做什么用的,想要得到什么或者验证什么。
--  作者:zhu_ruixian
--  发布时间:11/1/2006 11:08:00 AM

--  
const wchar_t *charReturnCodeToWcs( CharResult rc)
{
  switch (rc) {
  case char_SUCCESS:
   return L"SUCCESS";
  case char_ERROR:
   return L"ERROR";
  case char_FAIL:
   return L"FAIL";
  case char_INVALID_INPUT:
   return L"INVALID INPUT";
  case char_OUT_OF_MEMORY:
   return L"OUT OF MEMORY";
  case char_BUFFER_OVERFLOW:
   return L"BUFFER OVERFLOW";
  case char_CONVERSION_LOSS:
   return L"CONVERSION LOSS";
  default:
   return L"UNKNOWN";
 }
}
看到这么一个函数,想不明白调用结束以后,返回的字符窜放到那里了。
const char *test()
{
 return "UNKNOWN";
}
const Object*  test2(){
 Object obj;
     return &obj;
}
void main()
{
const char* p=test();
const Object*  q=  test2();
//delete p;
}
上面的p q都不用释放吗?
--  作者:卷积内核
--  发布时间:11/1/2006 1:49:00 PM

--  
pq都可以看作是对象,并没有给它们分配内存空间,所以没有必要释放空间。你上面的程序中跟踪可以跟踪到返回字符串的位置,他们并没有以显示方式给你看,仅仅是通过返回值进行switch判断而已。比如  return "UNKNOWN";传到charReturnCodeToWcs( CharResult rc)中,那么进switch判断的内容就是这个返回值----"UNKNOWN"
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms