CNDEV
CNDEV.ORG
当前在线
论坛
CBD
程序员情感CBD
程序员见面交流会
CBD开发区
Java/J2ME
.NET/C#
数据库
Delphi/BCB
Visual C
其它
修真养身
中国象棋
纪念日
谈钱太俗,还是投机吧
听音乐
iCosta
资源共享
一隅
好文共赏
看电影看美剧
待定
狗屎
雪域召唤
工作流
专业显摆区
语录
情感
批评与自我批评
爱情故事
发牢骚
看三点区
游戏
CNDEV-CS/WOW
浩宇长空
生活
家有XPH
我爱学英语
美食天地ORG
半调子体育迷
观澳园友邻
搞笑奇文
拍照片
我读书我存在
论坛系统
超级垃圾站
系统建议及BUG
系统测试
中国开发网
: 论坛:
程序员情感CBD
: 贴子 296760
王中王
: 这是他的特点。只顾着显示自己强,反倒忘了问题是什么。我觉得和编译器有关,和内存管理器也有关系
[阅读: 342] 2006-03-17 16:08:21
<空>
相关信息:
haitao:关于 delphi 对指针类型分配了内存后释放内存的问题
(59字)
(
pcplayer
[1321]
2006-03-17 15:11
)
c,c++好像都是这样的吧?
(空) (
Kaye
[384]
2006-03-17 15:28
)
C++其实释放时语言里是有数目参数的,但是编译器都自己做了处理,分配的内存是会在适当的地方记录大小等信息。
(空) (
周星驰
[472]
2006-03-17 15:35
)
没听说过,虽然有delete[]这一说,但是[]里是不写东西的,标准就是这样
(空) (
Kaye
[346]
2006-03-17 15:42
)
编译器自己知道数组有多大,所以不用写参数
(空) (
王中王
[292]
2006-03-17 15:51
)
这个操作符压根就没有数目参数啊,写了应该编译不过吧,不过我没试过
(空) (
Kaye
[343]
2006-03-17 16:09
)
写了也没用,包括std::allocator<T>::deallocate(pointer _Ptr, size_type)的第二个参数你写了也是忽略。
(空) (
周星驰
[577]
2006-03-17 15:57
)
我咋觉得你跟我说了很正确的话,但是没一个是回答问题的,你直说c,c++的数组前面没记大小,大小是保存在特殊地方就是了嘛,你说的这个跟主题一点关系都没有
(19字)
(
Kaye
[450]
2006-03-17 16:05
)
这是他的特点。只顾着显示自己强,反倒忘了问题是什么。我觉得和编译器有关,和内存管理器也有关系
(空) (
王中王
[341]
2006-03-17 16:08
)
具体俺就不懂,俺只研究语言的用法,然后想办法弄出个程序来就是了,至于编译器怎么玩的对俺来说太难了
(空) (
Kaye
[395]
2006-03-17 16:11
)
你不是说c,c++就是这样的吗?我就是为了说c++从语言上来说不完全是这样的,但是c++编译器在实现上实际默认了这点。std::allocator是标板,标板是蛤?
(空) (
周星驰
[411]
2006-03-17 16:12
)
std::allocator跟分配内存有啥关系啊,明显它是标准库的对象,用来方便标注库里的东西的实现,它最终肯定调用calloc,malloc,new之类的嘛
(空) (
Kaye
[505]
2006-03-17 16:29
)
它是C++标准的实现,意味着如果你想用其它的内存分配器替换它,那么也得按这个标准来。我们不就在说这个语言上的标准吗?
(空) (
周星驰
[436]
2006-03-17 16:33
)
这个是标准库的实现,只是表示你使用标准库并增加功能的时候需要按照这个来。分配内存本身的操作,如free,delete,这些标准都没有大小参数,你重载也得按照这个标准,这个才是C++……
(空) (
Kaye
[398]
2006-03-17 16:38
)
很多人写程序并不用标准库,所以标准库的适用范围有限,但是语言本身的标准是广泛适用的
(空) (
Kaye
[372]
2006-03-17 16:39
)
标准库本身就是标准之一,所以你不会看到表现形式千差万别的各种版本的stl
(空) (
周星驰
[400]
2006-03-17 19:42
)
另外看函数实现是可以看出点,但不一定,同样delete[]在vc上和在gcc上恐怕就不一样,在vc上是和delete一样的,在gcc上恐怕就嘚区别使用了
(空) (
周星驰
[408]
2006-03-17 16:14
)
管它在啥上,cpp98里规定的delete[]就不需要参数使用,vc只是私自增强了delete的功能而以
(空) (
Kaye
[439]
2006-03-17 16:32
)
不完全是这样,全局的delete[]是不需要大小参数,都说了编译器把这个自个儿处理了。但是。。。
(227字)
(
周星驰
[510]
2006-03-17 19:39
)
C++ 俺不懂。
(空) (
pcplayer
[271]
2006-03-17 15:53
)
我记得在某cndever的blog上写到过这个问题,当时他得出的结论是需要指明指针类型
(空) (
tweety
[363]
2006-03-17 15:29
)
不对吧?
(43字)
(
haitao
[285]
2006-03-17 15:31
)
无法知道,呵呵,这样用错不在语言或编译器,在程序本身。
(空) (
周星驰
[344]
2006-03-17 15:37
)
我是说,同样是指到内存区域的一个指针
(102字)
(
haitao
[444]
2006-03-17 15:57
)
释放也是释放原始P啊,哪有不保存P的值就直接修改P的!
(空) (
GoodHope
[337]
2006-03-17 15:55
)
我是反证“分配内存块时,把长度等信息放在-4字节(类似)”的做法是不对的
(161字)
(
haitao
[481]
2006-03-17 16:23
)
编程语言不是围着你的思想转的。
(72字)
(
GoodHope
[351]
2006-03-17 16:33
)
就是因为制订规则的人不比你差
(18字)
(
haitao
[267]
2006-03-17 16:36
)
知道就好
(9字)
(
GoodHope
[305]
2006-03-17 16:40
)
大哥,这个不是想到的,虽然俺不会delphi,记得学pascal的时候就有borland的书专门写过规则人家就是这样定的
(空) (
Kaye
[383]
2006-03-17 16:42
)
你是指string吧?
(107字)
(
haitao
[417]
2006-03-17 16:48
)
你可以试试,按照c++的标准习惯,这种情况的说明应该是undefine behavior,delphi应该也一样吧。人家叫你走人行道,你非得走到主路中间,会出现什么情况那很难说的
(空) (
Kaye
[439]
2006-03-17 17:11
)
是啊,我就想知道,这个undefine behavior是凭什么得出的
(20字)
(
haitao
[329]
2006-03-17 17:20
)
我靠,都undefine了你还想准啊?undefine的意思就是没保证,谁都不知道会咋样。比较好的是程序crash,坏的情况是不知道哪个中间值被修改了,程序还在继续运行,运行结果帅……
(空) (
Kaye
[636]
2006-03-17 17:29
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录