原来声明静态数组不占用内存呀

fj218 2003-12-29 01:11:20
比如
var
a:array [1..10000] of array [1..10000] of int64;
声明后居然不占用内存,而改用动态内存,就会占用。
另外声明一个最大的静态数组该如何写。是不是这样
var
a:array [1..Maxint div 2-1]
...全文
233 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
搬运工木木 2004-01-04
  • 打赏
  • 举报
回复
倒。。。。看书去吧,看一看静态变量和动态变量在内存中是怎么样分布的
mxk19791116 2003-12-29
  • 打赏
  • 举报
回复
呵呵
fj218 2003-12-29
  • 打赏
  • 举报
回复
To: qiume(杜克) 我真不知你测试过没有。
我就是这样测试的,内存一点也没变,不信你试。
47522341 2003-12-29
  • 打赏
  • 举报
回复
楼主是放分贴就早说吗;^_^
qiume 2003-12-29
  • 打赏
  • 举报
回复
肯定占用内存,你可以这样测试:
procedure TForm1.Button1Click(Sender: TObject);
var
a:array [1..10000] of array [1..10000] of int64;
begin

end;

//
1, 打开任务管理器
2,运行你的程序(注意看你的程序占了多少内存)
3,按下Button1,再看任务管理器
4,你发现内存涨了!!!
fj218 2003-12-29
  • 打赏
  • 举报
回复
不信,大家可以在程序中声明一个比较大的静态动态数组,然后打开windows任务管理器察看内存变化,运行后没有任何改变。而声明为动态数组,执行setlength后,内存就会减少。我估计静态变量是赋了值后才占用内存。
抱朴守拙 2003-12-29
  • 打赏
  • 举报
回复
肯定占内存的。
jackieji 2003-12-29
  • 打赏
  • 举报
回复
8可能地,没内存咋运行涅?!
静态声明,是在运行之前就分配好到数据区(内存),他的生存期与整个程序相同;
而动态声明,随时可以释放掉的。
noproblem12 2003-12-29
  • 打赏
  • 举报
回复
不可能不占内存的
hch_45 2003-12-29
  • 打赏
  • 举报
回复
在var中声明的变量是在栈中分配的,这由编译器对其管理而不是没有分配内存。
fj218 2003-12-29
  • 打赏
  • 举报
回复
我已测试过多遍,静态数组声明不占用内存,赋值后才占用,更令人惊讶的是即使是局部声明,静态数组一旦占用内存就不会释放,直到程序退出后才释放。而动态数组可以通过置nil可以释放内存。

delphipan 2003-12-29
  • 打赏
  • 举报
回复
搞不懂
jxc163 2003-12-29
  • 打赏
  • 举报
回复
?
xinghf 2003-12-29
  • 打赏
  • 举报
回复
不可能

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧