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

大家在申请内存时都是如何做的?
发信站: 水木社区 (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
<script language="Javascript" src="/jscon.php?bid=335&id=125785" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125787" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125789" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125792" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125793" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125794" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125795" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125802" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125804" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:26:02 2005), 站内




大部分是自己写assert的。

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


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:FlyingBoy] [进入讨论区] [返回顶部] 11
<script language="Javascript" src="/jscon.php?bid=335&id=125805" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125806" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:40:11 2005), 站内



什么时候出错不返回0?

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


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:FlyingBoy] [进入讨论区] [返回顶部] 13
<script language="Javascript" src="/jscon.php?bid=335&id=125807" type="text/javascript"> </script>发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:43:43 2005), 站内

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


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 14
<script language="Javascript" src="/jscon.php?bid=335&id=125808" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 18:44:29 2005), 站内



...... 

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


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 15
<script language="Javascript" src="/jscon.php?bid=335&id=125812" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125818" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125820" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125821" type="text/javascript"> </script>发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:23:17 2005), 站内

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


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 19
<script language="Javascript" src="/jscon.php?bid=335&id=125822" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:23:24 2005), 站内



你说的是栈吧……

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


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 20
<script language="Javascript" src="/jscon.php?bid=335&id=125824" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125830" type="text/javascript"> </script>发信人: alingsjtu (aling), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 19:41:55 2005), 站内


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


--

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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:chice] [进入讨论区] [返回顶部] 23
<script language="Javascript" src="/jscon.php?bid=335&id=125832" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125834" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125836" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125838" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125841" type="text/javascript"> </script>发信人: 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
<script language="Javascript" src="/jscon.php?bid=335&id=125842" type="text/javascript"> </script>发信人: RoachCock (力挺柏雪), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 20:19:15 2005), 站内


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

--
http://RoachCock.mysmth.net


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:xiaoyueer] [进入讨论区] [返回顶部] 29
<script language="Javascript" src="/jscon.php?bid=335&id=125846" type="text/javascript"> </script>发信人: xiaoyueer (开始再次相信你), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 20:51:15 2005), 站内


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

: 堆和栈都会有溢出。

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

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

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

: 【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: : 标  题: Re: 大家在申请内存时都是如何做的?
: : 发信站: 水木社区 (Thu Oct  6 19:34:07 2005), 站内
: : 
: : 缓冲区溢出就是指栈溢出吧,
: : 堆溢出也没效果啊?顶多程序出错。
: : 而且new操作会造成溢出吗?

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

正常情况下不会,但如果管理数据被覆盖后调用HeapAlloc在freelist的脱链操作时会产生以任意数据覆盖任意地址的可能
WindowsXP SP2加了对双向链表一致性的验检,但在某些情况下free block是用单链表链接的,也可能造成溢出


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


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


: --

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


--
亲爱的
不是只有你才会离开
我也会
我要去一个没有你的地方
好好的做我自己


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:FlyingBoy] [进入讨论区] [返回顶部] 30
<script language="Javascript" src="/jscon.php?bid=335&id=125852" type="text/javascript"> </script>发信人: FlyingBoy (对抗蝴蝶·奄奄一息), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 22:11:46 2005), 站内

抛出异常的时候返回值是怎么定义的?
【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: MS的CRT源代码里面,new直接返回HeapAlloc的结果
: 只要HeapAlloc成功,都是返回非0,失败都是0。
: 应该不存在只抛出异常,而返回值不为0的情况。
: ...................

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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:NetMD] [进入讨论区] [返回顶部] 31
<script language="Javascript" src="/jscon.php?bid=335&id=125854" type="text/javascript"> </script>发信人: NetMD (抵制日货,灭掉小日本), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 22:20:12 2005), 站内

程序流程改变,返回值没有意义了

【 在 FlyingBoy (对抗蝴蝶·奄奄一息) 的大作中提到: 】
: 抛出异常的时候返回值是怎么定义的?


--
目前的中国教育,导师具有至高无上的权力!
他虽然不能决定你的生死,却可以让你生不如死!


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:bestwell] [进入讨论区] [返回顶部] 32
<script language="Javascript" src="/jscon.php?bid=335&id=125855" type="text/javascript"> </script>发信人: bestwell (系统错误昵称无法显示), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 22:29:06 2005), 站内

一般当new失败时,不是内存无法分配资源,就是发生了其它致命错误
此时再特别处理,意义不大了,反正程序是救不活了。
想想,当内存耗尽资源无法分配时,再通过try/catch弹一个对话框告诉用户内存耗尽???

所以,new的错误一般就不处理了,

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



--
星垂平野阔,月涌大江流。

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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:kirbyzhou] [进入讨论区] [返回顶部] 33
<script language="Javascript" src="/jscon.php?bid=335&id=125861" type="text/javascript"> </script>发信人: kirbyzhou (世界太小 梦想太大), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 23:37:42 2005), 站内


【 在 bestwell (系统错误昵称无法显示) 的大作中提到: 】
: 一般当new失败时,不是内存无法分配资源,就是发生了其它致命错误
: 此时再特别处理,意义不大了,反正程序是救不活了。
: 想想,当内存耗尽资源无法分配时,再通过try/catch弹一个对话框告诉用户内存耗尽???
这得看分配一块多大的内存,拿来干什么用。关键数据当然是没办法。
但是比如说每打开一个文档就分配200m缓冲区,那还是处理一下比较好。。
: ...................

--
中华人民共和国宪法
第三十五条 中华人民共和国公民有言|论、出|版、集|会、结|社、游|行、示|威的自由。


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 34
<script language="Javascript" src="/jscon.php?bid=335&id=125863" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Thu Oct  6 23:49:27 2005), 站内



愿闻其详?


【 在 RoachCock (力挺柏雪) 的大作中提到: 】
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~你看得不够仔细


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


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:RoachCock] [进入讨论区] [返回顶部] 35
<script language="Javascript" src="/jscon.php?bid=335&id=125866" type="text/javascript"> </script>发信人: RoachCock (力挺柏雪), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Fri Oct  7 00:19:01 2005), 站内

去看源代码啊
D:/Program Files/Microsoft Visual Studio/VC98/CRT/SRC/MALLOC.C

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 愿闻其详?


--
http://RoachCock.mysmth.net


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 36
<script language="Javascript" src="/jscon.php?bid=335&id=125873" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Fri Oct  7 02:04:15 2005), 站内



我看得就是这个代码……

【 在 RoachCock (力挺柏雪) 的大作中提到: 】
: 去看源代码啊
: D:/Program Files/Microsoft Visual Studio/VC98/CRT/SRC/MALLOC.C


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


※ 修改:·poplay1 于 Oct  7 02:04:21 修改本文·[FROM: 202.108.158.*]
※ 来源:·水木社区 newsmth.net·[FROM: 202.108.158.*]

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:RoachCock] [进入讨论区] [返回顶部] 37
<script language="Javascript" src="/jscon.php?bid=335&id=125874" type="text/javascript"> </script>发信人: RoachCock (力挺柏雪), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Fri Oct  7 02:05:14 2005), 站内

拿你没看清吗? 是简单的HeapAlloc吗?

【 在 poplay1 (我长得象八宝齐有错吗?) 的大作中提到: 】
: 我看得就是这个代码……


--
http://RoachCock.mysmth.net


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

 
[本篇全文] [回复文章] [回信给作者] [本篇作者:poplay1] [进入讨论区] [返回顶部] 38
<script language="Javascript" src="/jscon.php?bid=335&id=125875" type="text/javascript"> </script>发信人: poplay1 (我长得象八宝齐有错吗?), 信区: CPlusPlus
标  题: Re: 大家在申请内存时都是如何做的?
发信站: 水木社区 (Fri Oct  7 02:11:11 2005), 站内



不是……但最终都是return HeapAlloc(xxx)……

【 在 RoachCock (力挺柏雪) 的大作中提到: 】
: 拿你没看清吗? 是简单的HeapAlloc吗?


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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值