免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3883 | 回复: 11
打印 上一主题 下一主题

[C++] 求一笔试题的输出结果! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-25 18:38 |只看该作者 |倒序浏览
int main()
{
        char **p=new char*[100];
        int ret;
        int i;
        for(i=0;i<sizeof(p);i++)
        {
           p[i]=new char[i];
           ret =i;
        }
        delete []p;
        p=NULL;
    cout<<ret<<endl;
        return 0;
}

一个笔试题,有四个选项:一个是程序有时会出错,一个是程序崩溃,一个是ret=99,还有一个忘了,但是貌似给的选项没有3?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2014-05-25 19:30 |只看该作者
这题不严谨,32位、64位结果不一样。再说万一new 失败了抛异常,程序会崩溃。

论坛徽章:
0
3 [报告]
发表于 2014-05-25 19:52 |只看该作者
32为下,如果new不出错的话,是不是就应该是ret=3了,再有p=new char[]这是什么意思啊??回复 2# hellioncu


   

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2014-05-25 21:04 |只看该作者
bjutslg 发表于 2014-05-25 19:52
32为下,如果new不出错的话,是不是就应该是ret=3了,再有p=new char[]这是什么意思啊??回复 2# hellionc ...


那应该是3。

申请一个char数组

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
5 [报告]
发表于 2014-05-25 21:18 |只看该作者
memory leak...

论坛徽章:
0
6 [报告]
发表于 2014-05-25 21:49 |只看该作者
怎么讲??回复 5# folklore


   

论坛徽章:
0
7 [报告]
发表于 2014-05-26 16:39 |只看该作者
讲清楚点呗,哪里会引起内存泄露啊?回复 5# folklore


   

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [报告]
发表于 2014-05-26 16:56 |只看该作者
本帖最后由 Herowinter 于 2014-05-26 17:01 编辑

p [ i ]=new char [ i ];这句,你没有释放p [ i ] 的内存。
回复 7# bjutslg
  1. valgrind --tool=memcheck --leak-check=full --show-reachable=yes --track-origins=yes ./t
  2. ==7408== Memcheck, a memory error detector
  3. ==7408== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
  4. ==7408== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
  5. ==7408== Command: ./t
  6. ==7408==
  7. 7
  8. ==7408==
  9. ==7408== HEAP SUMMARY:
  10. ==7408==     in use at exit: 28 bytes in 8 blocks
  11. ==7408==   total heap usage: 9 allocs, 1 frees, 828 bytes allocated
  12. ==7408==
  13. ==7408== 28 bytes in 8 blocks are definitely lost in loss record 1 of 1
  14. ==7408==    at 0x4A07152: operator new[](unsigned long) (vg_replace_malloc.c:363)
  15. ==7408==    by 0x4008B0: main (test.cpp:10)
  16. ==7408==
  17. ==7408== LEAK SUMMARY:
  18. ==7408==    definitely lost: 28 bytes in 8 blocks
  19. ==7408==    indirectly lost: 0 bytes in 0 blocks
  20. ==7408==      possibly lost: 0 bytes in 0 blocks
  21. ==7408==    still reachable: 0 bytes in 0 blocks
  22. ==7408==         suppressed: 0 bytes in 0 blocks
  23. ==7408==
  24. ==7408== For counts of detected and suppressed errors, rerun with: -v
  25. ==7408== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6)
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-05-26 17:11 |只看该作者
还真是啊 没有注意到for循环中的new!你下面这些代码是什么意思啊 没见过哎回复 8# Herowinter


   

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
10 [报告]
发表于 2014-05-26 17:13 |只看该作者
回复 9# bjutslg
一个测试程序内存问题的工具valgrind,有兴趣可以google下,
做C/C++开发,基本都用得上。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP