大家在申请内存时都是如何做的?
发信站: 水木社区 (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.*]
发信站: 水木社区 (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.*]
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*]
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |
| ||
<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.*] |