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

大家在申请内存时都是如何做的?
发信站:水木社区(ThuOct616:27:192005),站内

近日我在读scottmayes的effectivec++2e,看到内存管理那块
觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
A*pa=newA;
也不会写什么set_new_handler,try-catch这类的异常处理手段。
大家在写程序的时候碰到类似的问题都是怎么作的呢?

我特别想知道在公司里面的正规做法是什么样的.因为本人一直都是个
学院派,赫赫,没在公司做过实际的项目。
望指教

--

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

[本篇全文] [回复文章] [回信给作者] [本篇作者:suowei1979] [进入讨论区] [返回顶部] 2
发信人:suowei1979(hacker&hacking),信区:CPlusPlus
标题:Re:大家在申请内存时都是如何做的?
发信站:水木社区(ThuOct616:28:502005),站内

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

--

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

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

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

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


--

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

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

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

--
Becausewearecurious;
Becausewearelazy;
Becausewearenotsoable.


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

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



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

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

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


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

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

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

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

--

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

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

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


--

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

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



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

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


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


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

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


【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
:标题:Re:大家在申请内存时都是如何做的?
:发信站:水木社区(ThuOct616:40:262005),站内
:
:
:
:一般new出来,assert()是否等于0就可以了。
^^^^^^^^^^^^这个只在debug下管用
:
:【在jiangfei(afei)的大作中提到:】
::近日我在读scottmayes的effectivec++2e,看到内存管理那块
::觉得以前在用new时问题太多了,但是据我不多的了解,身边的同学
::们写代码时也不会太关注这些问题,往往都是要new一个东东的时候就随便
::...................
:
:--
:┏═════════════════════┓
:║欢迎光临§SEVENELEVEN§本月优惠║
:║华强北店★24小时营业║
:║咖喱大鱼蛋+糯米鸡+肠仔仅售⑩!║
:┗─────悭!正!至抵!至平!─────┛
:
:
:※来源:·水木社区newsmth.net·[FROM:211.151.90.*]


--

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

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




大部分是自己写assert的。

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


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


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

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


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

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


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

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



什么时候出错不返回0?

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


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


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

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

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


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


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

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



......

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


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


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

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


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

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

【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
:标题:Re:大家在申请内存时都是如何做的?
:发信站:水木社区(ThuOct618:40:112005),站内
:
:
:
:什么时候出错不返回0?
:
:【在FlyingBoy(对抗蝴蝶·奄奄一息)的大作中提到:】
::这个算对吧显然不对
:
:
:--
:┏═════════════════════┓
:║欢迎光临§SEVENELEVEN§本月优惠║
:║华强北店★24小时营业║
:║咖喱大鱼蛋+糯米鸡+肠仔仅售⑩!║
:┗─────悭!正!至抵!至平!─────┛
:
:
:※来源:·水木社区newsmth.net·[FROM:202.108.158.*]


--

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

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



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



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


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


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

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

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

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

【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
:标题:Re:大家在申请内存时都是如何做的?
:发信站:水木社区(ThuOct619:13:482005),站内
:
:
:
:new里面的操作会破坏堆吗?
:还是说new成功之后后面的操作破坏了堆?那和new没有关系啊。
:还有,堆不是那么好破坏的吧?
:
:
:
:【在chice(Oh!)的大作中提到:】
::堆如果被破坏了,new也可能会返回非0,程序也可能暂时不崩溃
::但是这个时候程序显然早已出错,不能可靠运行了。
:
:
:--
:┏═════════════════════┓
:║欢迎光临§SEVENELEVEN§本月优惠║
:║华强北店★24小时营业║
:║咖喱大鱼蛋+糯米鸡+肠仔仅售⑩!║
:┗─────悭!正!至抵!至平!─────┛
:
:
:※来源:·水木社区newsmth.net·[FROM:202.108.158.*]


--

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

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

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


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


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

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



你说的是栈吧……

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


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


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

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

no.

imeanheap,notstack.


【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
:标题:Re:大家在申请内存时都是如何做的?
:发信站:水木社区(ThuOct619:23:242005),站内
:
:
:
:你说的是栈吧……
:
:【在chice(Oh!)的大作中提到:】
::我就是指在有可能其他地方破坏了堆。
::只要缓冲区溢出,破坏堆还是很容易的……
:
:

--

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

发信人:poplay1(我长得象八宝齐有错吗?),信区:CPlusPlus
标题:Re:大家在申请内存时都是如何做的?
发信站:水木社区(ThuOct619:34:072005),站内



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



【在chice(Oh!)的大作中提到:】
:no.
:imeanheap,notstack.


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


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

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


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


--

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

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

堆和栈都会有溢出。

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

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

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

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

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


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


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


--

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

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


【在chice(Oh!)的大作中提到:】
:标题:Re:大家在申请内存时都是如何做的?
:发信站:水木社区(ThuOct619:42:172005),站内
:
:堆和栈都会有溢出。
:
:只是栈溢出利用起来更方便,而且发生的概率更大一些。
:
:堆溢出也可以被利用,比如,一般来说crt或os的堆管理器要维护堆的链表,
:精心构造后,可以让系统代码在试图修改链表的时候把另外一块内存也改掉。
:
:记得以前xfocus上好像专门有文章讲过这个问题。
就是那篇“Windows下的HEAP溢出及其利用”,翻译的
:【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
::标题:Re:大家在申请内存时都是如何做的?
::发信站:水木社区(ThuOct619:34:072005),站内
::
::缓冲区溢出就是指栈溢出吧,
::堆溢出也没效果啊?顶多程序出错。
::而且new操作会造成溢出吗?
:
:new本身不会啊,我前面说的是用户的代码如果造成了堆溢出的情况下,new会出问题,
:正常情况下new是没有任何问题的啊。
:
:
:ms前面没说清楚……好久不灌水了,现在发帖一点感觉都没有-_-
:
:
::
::
::
::【在chice(Oh!)的大作中提到:】
:::no.
:::imeanheap,notstack.
::
::
::※来源:·水木社区newsmth.net·[FROM:202.108.158.*]
:
:
:--
:
:※来源:·水木社区newsmth.net·[FROM:59.66.156.*]


--

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

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



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

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


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


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


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

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


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

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


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

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


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

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


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

--
http://RoachCock.mysmth.net


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

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


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

--
http://RoachCock.mysmth.net


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

[本篇全文] [回复文章] [回信给作者] [本篇作者:xiaoyueer] [进入讨论区] [返回顶部] 29
发信人:xiaoyueer(开始再次相信你),信区:CPlusPlus
标题:Re:大家在申请内存时都是如何做的?
发信站:水木社区(ThuOct620:51:152005),站内


【在chice(Oh!)的大作中提到:】
:标题:Re:大家在申请内存时都是如何做的?
:发信站:水木社区(ThuOct619:42:172005),站内
:
:堆和栈都会有溢出。
:
:只是栈溢出利用起来更方便,而且发生的概率更大一些。
:
:堆溢出也可以被利用,比如,一般来说crt或os的堆管理器要维护堆的链表,
:精心构造后,可以让系统代码在试图修改链表的时候把另外一块内存也改掉。
:
:记得以前xfocus上好像专门有文章讲过这个问题。
:
:【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
::标题:Re:大家在申请内存时都是如何做的?
::发信站:水木社区(ThuOct619:34:072005),站内
::
::缓冲区溢出就是指栈溢出吧,
::堆溢出也没效果啊?顶多程序出错。
::而且new操作会造成溢出吗?
:
:new本身不会啊,我前面说的是用户的代码如果造成了堆溢出的情况下,new会出问题,
:正常情况下new是没有任何问题的啊。
:
正常情况下不会,但如果管理数据被覆盖后调用HeapAlloc在freelist的脱链操作时会产生以任意数据覆盖任意地址的可能
WindowsXPSP2加了对双向链表一致性的验检,但在某些情况下freeblock是用单链表链接的,也可能造成溢出

:
:ms前面没说清楚……好久不灌水了,现在发帖一点感觉都没有-_-
:
:
::
::
::
::【在chice(Oh!)的大作中提到:】
:::no.
:::imeanheap,notstack.
::
::
::※来源:·水木社区newsmth.net·[FROM:202.108.158.*]
:
:
:--
:
:※来源:·水木社区newsmth.net·[FROM:59.66.156.*]


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


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

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

抛出异常的时候返回值是怎么定义的?
【在poplay1(我长得象八宝齐有错吗?)的大作中提到:】
:MS的CRT源代码里面,new直接返回HeapAlloc的结果
:只要HeapAlloc成功,都是返回非
分享到:
评论
happmaoo
  • 浏览: 1287460 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

你可能感兴趣的:(.net,windows,OS,项目管理,vc++)