| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1572 人关注过本帖
标题:[求助]数组大小问题
只看楼主 加入收藏
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
最后结果是两人汗了大半天

有空多交流

我的原则很简单:不做不喜欢的事!
2006-10-22 16:24
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

...嘿嘿

正好有空.来讨论下

你对malloc和new是怎么理解的.?


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-10-22 16:26
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

以前偶写过一篇文章是谈C中的malloc和free两个函数的,发表在这个论坛了,最后偶自己又添加了realloc的机制,不过

没有在论坛上补上,对于new是C++的,偶想差别应该不是很大,因为C++偶还没有学过。反正内存管理部分就是比较难控

制,小心一点就可以了。


我的原则很简单:不做不喜欢的事!
2006-10-22 16:30
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
你的那个我看过了..

以前我一直认为 new的原理是在其中调用了malloc

可是.最近我看见一点资料.上面说的是new与malloc所分配的内存并不是一个区域的

所以有点迷茫..刚在找资料.好象确实是这样子的.

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-10-22 16:33
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
恩``偶记得在CSDN上也曾看过有人说new和malloc的区别,GOOGLE一下这样的文章应该很多。偶现在也找找。

我的原则很简单:不做不喜欢的事!
2006-10-22 16:35
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
SUN,真的是一大把。

http://topic.csdn.net/t/20010907/12/276378.html
http://speechtech.blogchina.com/3106046.html
http://topic.csdn.net/t/20030608/21/1891715.html

CSDN论坛讨论的比较多,自己看完后总结成文章会更好。

我的原则很简单:不做不喜欢的事!
2006-10-22 16:38
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
嘿嘿.我看看先..我没找他俩的区别.只找了new的内部实现.

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-10-22 16:40
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
没有我想要的.你看看这个.
http://os.yesky.com/lin/118/2595618_4.shtml

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-10-22 16:43
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

偶不懂C++

慢慢找下应该有,这些知识往往涉及到操作系统的知识了。


我的原则很简单:不做不喜欢的事!
2006-10-22 16:51
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
malloc() 函数只能分配(64K 减 1 个字节)的内存,
原因如:
先看 malloc() 函数定义的原型(定义在 malloc.h 头文件内,在 stdlib.h 有同样的定义):
void *_Cdecl malloc (size_t size);

malloc() 函数只带一个参数 size,参数的类型是 size_t,size_t 类型其实是 unsigned int 类型(stdlib.h 头文件中可以找到它的声明处)

int 类型在 Turbo C 2.0 下为 2 字节,unsigned int 可表示值的范围是 0 至 65535,即可说明 malloc() 函数只允许分配 0 至 (64KB - 1字节) 的内存,其实这并非特意安排或者因为 int 类型的巧合,而是因为DOS每单位段大小就是 64KB。若要分配更大的内存空间,可使用远堆分配函数 farmalloc() 函数,它允许分配的内存最高约为 2GB。

需要注意的是:不要让 size 为 0,虽然程序这并不报错,还有就是,size 参数赋给一个负数(如 malloc(-1))也语法是正确的,然而,size 的类型为无符号整型,-1 转换为 unsigned int 后将是一个非常大的正数值。

malloc() 分配的内存由调用者手动去释放(使用 free() 函数),若意外情况或者根本没有检查手动分配的内存是否释放,那将引起最常见的内存泄露问题。

欢迎加入 MVC 技术讨论群(新群:90093426)
2006-10-22 17:13
快速回复:[求助]数组大小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026470 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved