以文本方式查看主题 - 计算机科学论坛 (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 |