发信站: 水木社区 (Thu Oct 6 16:27:19 2005), 站内
近日我在读scott mayes的effective c++ 2e,看到内存管理那块
觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
A *pa = new A;
也不会写什么set_new_handler,try-catch 这类的异常处理手段。
大家在写程序的时候碰到类似的问题都是怎么作的呢?
我特别想知道在公司里面的正规做法是什么样的.因为本人一直都是个
学院派,赫赫,没在公司做过实际的项目。
望指教
--
※ 来源:·水木社区 newsmth.net·[FROM: 61.167.60.*]
|
||
发信人: suowei1979 (hacker & hacking), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:28:50 2005), 站内 你说的那个是vc里面才有的巴 -- ※ 来源:·水木社区 newsmth.net·[FROM: 221.204.79.*] |
|
||
发信人: jiangfei (afei), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:33:24 2005), 站内 不是只有vc里有阿! 【 在 suowei1979 (hacker & hacking) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 61.167.60.*] |
|
||
发信人: zsth (小皮), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:36:16 2005), 站内 这跟项目的具体需求有关 -- ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.116.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:40:26 2005), 站内 一般new出来,assert()是否等于0就可以了。 【 在 jiangfei (afei) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 211.151.90.*] |
|
||
发信人: jiangfei (afei), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:42:26 2005), 站内 我想也是这样,可能写大型能够长久执行的软件,这方面就需要注意了。谢谢。 【 在 zsth (小皮) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 61.167.60.*] |
|
||
发信人: longda (longda), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:42:52 2005), 站内 不是吧,检查new的结果是不是0没有意义的.除非使用nothrow的new -- ※ 来源:·水木社区 newsmth.net·[FROM: 218.249.41.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 16:45:15 2005), 站内 不管throw不throw,new出来0一定是错的,new出错一定返回0 【 在 longda (longda) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 211.151.90.*] |
|
||
发信人: psm (阿肥), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 17:43:17 2005), 站内 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 18:26:02 2005), 站内 大部分是自己写assert的。 【 在 psm (阿肥) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*] |
|
||
发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 18:35:03 2005), 站内 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 18:40:11 2005), 站内 什么时候出错不返回0? 【 在 FlyingBoy (对抗蝴蝶·奄奄一息) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*] |
|
||
发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 18:43:43 2005), 站内 抛异常的时候 -- ※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 18:44:29 2005), 站内 ...... 【 在 FlyingBoy (对抗蝴蝶·奄奄一息) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*] |
|
||
发信人: chice ( Oh! ), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 18:49:52 2005), 站内 堆如果被破坏了,new也可能会返回非0,程序也可能暂时不崩溃 但是这个时候程序显然早已出错,不能可靠运行了。 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:13:48 2005), 站内 new里面的操作会破坏堆吗? 【 在 chice ( Oh! ) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*] |
|
||
发信人: chice ( Oh! ), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:18:14 2005), 站内 我就是指在有可能其他地方破坏了堆。 只要缓冲区溢出,破坏堆还是很容易的…… 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*] |
|
||
发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:23:17 2005), 站内 咋了? -- ※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:23:24 2005), 站内 你说的是栈吧…… 【 在 chice ( Oh! ) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*] |
|
||
发信人: chice ( Oh! ), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:32:03 2005), 站内 no. i mean heap, not stack . 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*] |
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标 题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct 6 19:34:07 2005), 站内
缓冲区溢出就是指栈溢出吧,
堆溢出也没效果啊?顶多程序出错。
而且new操作会造成溢出吗?
【 在 chice ( Oh! ) 的大作中提到: 】
: no.
: i mean heap, not stack .
--
┏═════════════════════┓
║ 欢迎光临 §SEVEN ELEVEN§ 本月优惠 ║
║ 华强北店★24小时营业 ║
║ 咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩! ║
┗───── 悭!正!至抵!至平!─────┛
※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]
|
||
发信人: alingsjtu (aling), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:41:55 2005), 站内 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 211.96.233.*] |
|
||
发信人: chice ( Oh! ), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:42:17 2005), 站内 堆和栈都会有溢出。 只是栈溢出利用起来更方便,而且发生的概率更大一些。 堆溢出也可以被利用,比如,一般来说crt或os的堆管理器要维护堆的链表, 记得以前xfocus上好像专门有文章讲过这个问题。 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 new 本身不会啊,我前面说的是用户的代码如果造成了堆溢出的情况下,new会出问题, ms前面没说清楚…… 好久不灌水了,现在发帖一点感觉都没有 -_- : -- ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*] |
|
||
发信人: alingsjtu (aling), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:43:38 2005), 站内 【 在 chice ( Oh! ) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 211.96.233.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:51:21 2005), 站内 想到了会覆盖下一个缓冲区,顶多造成Crash…… 这玩意还真是防不胜防…… 【 在 alingsjtu (aling) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*] |
|
||
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 19:59:27 2005), 站内 MS的CRT源代码里面,new直接返回HeapAlloc的结果 堆溢出的情况太特殊了,异常没办法处理这种情况。 【 在 chice ( Oh! ) 的大作中提到: 】 -- ※ 修改:·poplay1 于 Oct 6 20:02:44 修改本文·[FROM: 211.151.90.*] |
|
||
发信人: RoachCock (力挺柏雪), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 20:17:13 2005), 站内 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 -- ※ 来源:·水木社区 newsmth.net·[FROM: 218.2.249.*] |
|
||
发信人: RoachCock (力挺柏雪), 信区: CPlusPlus 标 题: Re: 大家在申请内存时都是如何做的? 发信站: 水木社区 (Thu Oct 6 20:19:15 2005), 站内 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】 |