现在的位置: 首页 > 综合 > 正文

大家在申请内存时都是如何做的?[ask in smth]

2013年02月08日 ⁄ 综合 ⁄ 共 13167字 ⁄ 字号 评论关闭
大家在申请内存时都是如何做的?
发信站: 水木社区 (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] [进入讨论区] [返回顶部] 2
发信人: suowei1979 (hacker & hacking), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:28:50 2005), 站内

你说的那个是vc里面才有的巴
纯c++的话还是要new阿
【 在 jiangfei (afei) 的大作中提到: 】
: 近日我在读scott mayes的effective  c++ 2e,看到内存管理那块
: 觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
: 们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
: ...................

--

※ 来源:·水木社区 newsmth.net·[FROM: 221.204.79.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:jiangfei] [进入讨论区] [返回顶部] 3
发信人: jiangfei (afei), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:33:24 2005), 站内

不是只有vc里有阿!
这是c++的东西,应该是各种编译器都支持的,具体可能有些不一样,
但是这种机制肯定是存在的。

【 在 suowei1979 (hacker & hacking) 的大作中提到: 】
: 你说的那个是vc里面才有的巴
: 纯c++的话还是要new阿

--

※ 来源:·水木社区 newsmth.net·[FROM: 61.167.60.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:zsth] [进入讨论区] [返回顶部] 4
发信人: zsth (小皮), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:36:16 2005), 站内

这跟项目的具体需求有关
用set_new_handler、try-catch使程序更健壮,但是使用这些异常处理结构将使
程序变大,执行速度变慢
【 在 jiangfei (afei) 的大作中提到: 】
: 近日我在读scott mayes的effective  c++ 2e,看到内存管理那块
: 觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
: 们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
: ...................

--
Because we are curious;
Because we are lazy;
Because we are not so able.

※ 来源:·水木社区 newsmth.net·[FROM: 59.66.116.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 5
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:40:26 2005), 站内

一般new出来,assert()是否等于0就可以了。

【 在 jiangfei (afei) 的大作中提到: 】
: 近日我在读scott mayes的effective  c++ 2e,看到内存管理那块
: 觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
: 们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
: ...................

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 211.151.90.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:jiangfei] [进入讨论区] [返回顶部] 6
发信人: jiangfei (afei), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:42:26 2005), 站内

我想也是这样,可能写大型能够长久执行的软件,这方面就需要注意了。谢谢。

【 在 zsth (小皮) 的大作中提到: 】
: 这跟项目的具体需求有关
: 用set_new_handler、try-catch使程序更健壮,但是使用这些异常处理结构将使
: 程序变大,执行速度变慢
: ...................

--

※ 来源:·水木社区 newsmth.net·[FROM: 61.167.60.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:longda] [进入讨论区] [返回顶部] 7
发信人: longda (longda), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:42:52 2005), 站内

不是吧,检查new的结果是不是0没有意义的.除非使用nothrow的new
【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 一般new出来,assert()是否等于0就可以了。

--

※ 来源:·水木社区 newsmth.net·[FROM: 218.249.41.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 8
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 16:45:15 2005), 站内

不管throw不throw,new出来0一定是错的,new出错一定返回0

【 在 longda (longda) 的大作中提到: 】
: 不是吧,检查new的结果是不是0没有意义的.除非使用nothrow的new

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 211.151.90.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:psm] [进入讨论区] [返回顶部] 9
发信人: psm (阿肥), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 17:43:17 2005), 站内

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 标  题: Re: 大家在申请内存时都是如何做的?
: 发信站: 水木社区 (Thu Oct  6 16:40:26 2005), 站内



: 一般new出来,assert()是否等于0就可以了。
               ^^^^^^^^^^^^这个只在debug下管用

: 【 在 jiangfei (afei) 的大作中提到: 】
: : 近日我在读scott mayes的effective  c++ 2e,看到内存管理那块
: : 觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
: : 们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
: : ...................

: --
: ┏═════════════════════┓
: ║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
: ║           华强北店★24小时营业           ║
: ║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
: ┗─────  悭!正!至抵!至平!─────┛


: ※ 来源:·水木社区 newsmth.net·[FROM: 211.151.90.*]

--

※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 10
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:26:02 2005), 站内

大部分是自己写assert的。

【 在 psm (阿肥) 的大作中提到: 】
:                ^^^^^^^^^^^^这个只在debug下管用

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:FlyingBoy] [进入讨论区] [返回顶部] 11
发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:35:03 2005), 站内

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 不管throw不throw,new出来0一定是错的,new出错一定返回0
                    这个算对吧          显然不对

--
[清江引]弃微名去来心快哉,一笑白云外。
知音三五人,痛饮何妨碍。醉袍袖舞嫌天地窄。
[山坡羊]无官何患,无钱何惮,休教无德人轻慢。
你便列朝班,铸铜山,止不过只为衣和饭,腹内不饥身上暖。
官,君莫想;钱,君莫想。

※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 12
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:40:11 2005), 站内

什么时候出错不返回0?

【 在 FlyingBoy (对抗蝴蝶·奄奄一息) 的大作中提到: 】
:                     这个算对吧          显然不对

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:FlyingBoy] [进入讨论区] [返回顶部] 13
发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:43:43 2005), 站内

抛异常的时候
【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 什么时候出错不返回0?

--
[清江引]弃微名去来心快哉,一笑白云外。
知音三五人,痛饮何妨碍。醉袍袖舞嫌天地窄。
[山坡羊]无官何患,无钱何惮,休教无德人轻慢。
你便列朝班,铸铜山,止不过只为衣和饭,腹内不饥身上暖。
官,君莫想;钱,君莫想。

※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 14
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:44:29 2005), 站内

...... 

【 在 FlyingBoy (对抗蝴蝶·奄奄一息) 的大作中提到: 】
: 抛异常的时候

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 15
发信人: chice ( Oh! ), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:49:52 2005), 站内

 堆如果被破坏了,new也可能会返回非0,程序也可能暂时不崩溃

 但是这个时候程序显然早已出错,不能可靠运行了。

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 标  题: Re: 大家在申请内存时都是如何做的?
: 发信站: 水木社区 (Thu Oct  6 18:40:11 2005), 站内



: 什么时候出错不返回0?

: 【 在 FlyingBoy (对抗蝴蝶·奄奄一息) 的大作中提到: 】
: :                     这个算对吧          显然不对


: --
: ┏═════════════════════┓
: ║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
: ║           华强北店★24小时营业           ║
: ║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
: ┗─────  悭!正!至抵!至平!─────┛


: ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

--

※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 16
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:13:48 2005), 站内

new里面的操作会破坏堆吗?
还是说new成功之后后面的操作破坏了堆?那和new没有关系啊。
还有,堆不是那么好破坏的吧?

【 在 chice ( Oh! ) 的大作中提到: 】
:  堆如果被破坏了,new也可能会返回非0,程序也可能暂时不崩溃
:  但是这个时候程序显然早已出错,不能可靠运行了。

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 17
发信人: chice ( Oh! ), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:18:14 2005), 站内

我就是指在有可能其他地方破坏了堆。

只要缓冲区溢出,破坏堆还是很容易的……

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 标  题: Re: 大家在申请内存时都是如何做的?
: 发信站: 水木社区 (Thu Oct  6 19:13:48 2005), 站内



: new里面的操作会破坏堆吗?
: 还是说new成功之后后面的操作破坏了堆?那和new没有关系啊。
: 还有,堆不是那么好破坏的吧?



: 【 在 chice ( Oh! ) 的大作中提到: 】
: :  堆如果被破坏了,new也可能会返回非0,程序也可能暂时不崩溃
: :  但是这个时候程序显然早已出错,不能可靠运行了。


: --
: ┏═════════════════════┓
: ║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
: ║           华强北店★24小时营业           ║
: ║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
: ┗─────  悭!正!至抵!至平!─────┛


: ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

--

※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:FlyingBoy] [进入讨论区] [返回顶部] 18
发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:23:17 2005), 站内

咋了?
【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: ...... 

--
[清江引]弃微名去来心快哉,一笑白云外。
知音三五人,痛饮何妨碍。醉袍袖舞嫌天地窄。
[山坡羊]无官何患,无钱何惮,休教无德人轻慢。
你便列朝班,铸铜山,止不过只为衣和饭,腹内不饥身上暖。
官,君莫想;钱,君莫想。

※ 来源:·水木社区 newsmth.net·[FROM: 166.111.249.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 19
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:23:24 2005), 站内

你说的是栈吧……

【 在 chice ( Oh! ) 的大作中提到: 】
: 我就是指在有可能其他地方破坏了堆。
: 只要缓冲区溢出,破坏堆还是很容易的……

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 20
发信人: chice ( Oh! ), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:32:03 2005), 站内

no.

i mean heap, not stack .

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 标  题: Re: 大家在申请内存时都是如何做的?
: 发信站: 水木社区 (Thu Oct  6 19:23:24 2005), 站内



: 你说的是栈吧……

: 【 在 chice ( Oh! ) 的大作中提到: 】
: : 我就是指在有可能其他地方破坏了堆。
: : 只要缓冲区溢出,破坏堆还是很容易的……

--

※ 来源:·水木社区 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] [进入讨论区] [返回顶部] 22
发信人: alingsjtu (aling), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:41:55 2005), 站内

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 缓冲区溢出就是指栈溢出吧,
: 堆溢出也没效果啊?顶多程序出错。
: 而且new操作会造成溢出吗?
: ...................
嘿嘿,google“Windows下的HEAP溢出及其利用”

--

※ 来源:·水木社区 newsmth.net·[FROM: 211.96.233.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 23
发信人: chice ( Oh! ), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:42:17 2005), 站内

堆和栈都会有溢出。

只是栈溢出利用起来更方便,而且发生的概率更大一些。

堆溢出也可以被利用,比如,一般来说crt或os的堆管理器要维护堆的链表,
精心构造后,可以让系统代码在试图修改链表的时候把另外一块内存也改掉。

记得以前xfocus上好像专门有文章讲过这个问题。

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 标  题: Re: 大家在申请内存时都是如何做的?
: 发信站: 水木社区 (Thu Oct  6 19:34:07 2005), 站内

: 缓冲区溢出就是指栈溢出吧,
: 堆溢出也没效果啊?顶多程序出错。
: 而且new操作会造成溢出吗?

new 本身不会啊,我前面说的是用户的代码如果造成了堆溢出的情况下,new会出问题,
正常情况下 new 是没有任何问题的啊。

ms前面没说清楚……   好久不灌水了,现在发帖一点感觉都没有   -_-




: 【 在 chice ( Oh! ) 的大作中提到: 】
: : no.
: : i mean heap, not stack .


: ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

--

※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:alingsjtu] [进入讨论区] [返回顶部] 24
发信人: alingsjtu (aling), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:43:38 2005), 站内

【 在 chice ( Oh! ) 的大作中提到: 】
: 标  题: Re: 大家在申请内存时都是如何做的?
: 发信站: 水木社区 (Thu Oct  6 19:42:17 2005), 站内

: 堆和栈都会有溢出。

: 只是栈溢出利用起来更方便,而且发生的概率更大一些。

: 堆溢出也可以被利用,比如,一般来说crt或os的堆管理器要维护堆的链表,
: 精心构造后,可以让系统代码在试图修改链表的时候把另外一块内存也改掉。

: 记得以前xfocus上好像专门有文章讲过这个问题。
就是那篇“Windows下的HEAP溢出及其利用”,翻译的 
: 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: : 标  题: Re: 大家在申请内存时都是如何做的?
: : 发信站: 水木社区 (Thu Oct  6 19:34:07 2005), 站内
: : 
: : 缓冲区溢出就是指栈溢出吧,
: : 堆溢出也没效果啊?顶多程序出错。
: : 而且new操作会造成溢出吗?

: new 本身不会啊,我前面说的是用户的代码如果造成了堆溢出的情况下,new会出问题,
: 正常情况下 new 是没有任何问题的啊。


: ms前面没说清楚……   好久不灌水了,现在发帖一点感觉都没有   -_-


: : 
: : 
: : 
: : 【 在 chice ( Oh! ) 的大作中提到: 】
: : : no.
: : : i mean heap, not stack .
: : 
: : 
: : ※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]


: --

: ※ 来源:·水木社区 newsmth.net·[FROM: 59.66.156.*]

--

※ 来源:·水木社区 newsmth.net·[FROM: 211.96.233.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 25
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:51:21 2005), 站内

想到了会覆盖下一个缓冲区,顶多造成Crash……
但是没想到可以用来覆盖链表区……
之后new就可以改写任意地址……

这玩意还真是防不胜防……

【 在 alingsjtu (aling) 的大作中提到: 】
: 嘿嘿,google“Windows下的HEAP溢出及其利用”

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 26
发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:59:27 2005), 站内

MS的CRT源代码里面,new直接返回HeapAlloc的结果
只要HeapAlloc成功,都是返回非0,失败都是0。
应该不存在只抛出异常,而返回值不为0的情况。

堆溢出的情况太特殊了,异常没办法处理这种情况。

【 在 chice ( Oh! ) 的大作中提到: 】
: 堆和栈都会有溢出。
: 只是栈溢出利用起来更方便,而且发生的概率更大一些。
: 堆溢出也可以被利用,比如,一般来说crt或os的堆管理器要维护堆的链表,
: ...................

--
┏═════════════════════┓
║    欢迎光临 §SEVEN ELEVEN§ 本月优惠    ║
║           华强北店★24小时营业           ║
║    咖喱大鱼蛋 + 糯米鸡 + 肠仔 仅售 ⑩!   ║
┗─────  悭!正!至抵!至平!─────┛

※ 修改:·poplay1 于 Oct  6 20:02:44 修改本文·[FROM: 211.151.90.*]
※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:RoachCock] [进入讨论区] [返回顶部] 27
发信人: RoachCock (力挺柏雪), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 20:17:13 2005), 站内

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 不管throw不throw,new出来0一定是错的,new出错一定返回0
                                        ~~~~~~~~~~~~~~~~~你出错返回什么?

--
http://RoachCock.mysmth.net

※ 来源:·水木社区 newsmth.net·[FROM: 218.2.249.*]

 

[本篇全文] [回复文章] [回信给作者] [本篇作者:RoachCock] [进入讨论区] [返回顶部] 28
发信人: RoachCock (力挺柏雪), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 20:19:15 2005), 站内

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: MS的CRT源代码里面,new直接返回HeapAlloc的结果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~你看得不够仔细
: 只要HeapAlloc成功,都是返回非0,失败都是0。

抱歉!评论已关闭.