integer、string、char类型的变量,它们的内存是怎样分配的?
我看一本书上这样说的:变量可以看成两部分,一是变量本身,二是变量的内存占用。
这句话该怎么理解?
比如:
var
s:string;
s:='abcdefg';
是不是说明s本身占4字节的内存空间,也就是sizeof(s),然后其内容却存放在另一块内存区域,占用另一块内存空间?
变量s的地址中存放的内容是'abcdefg'的地址还是'abcdefg'这个字符串?
我看一本书上这样说的:变量可以看成两部分,一是变量本身,二是变量的内存占用。
这句话该怎么理解?
比如:
var
s:string;
s:='abcdefg';
是不是说明s本身占4字节的内存空间,也就是sizeof(s),然后其内容却存放在另一块内存区域,占用另一块内存空间?
变量s的地址中存放的内容是'abcdefg'的地址还是'abcdefg'这个字符串?
比如:
var
m: Integer;
s: string;
begin
m := 2;
s := 'Hi';
end;上面的程序中,m变量(值类型)实际上就是一个地址,这个地址存放了m的值。
而s变量(引用类型)可以看做是一个指针,它也是一个地址,只不过这个地址存放的是另外一个地址(如'Hi')的值。
"谷子"代表lz,
那么lz这个人占用了资源,
"谷子"这两个字也占用了资源.
Assert(SizeOf(string) = 4);