第1个回答 2008-10-30
我问的是没有new占多大空间
你觉得测试没有new的对象有意义吗?其结果我想你也知道,不分配任何空间,不占用字节
没有new的对象,内存中根本就不存在
/////////////////////////////最后更新
只能得出赋了初值的对象占的空间大小?
我不知道你怎么测试的
object obj = new object();
long longtest = GetSpaceForObject(obj);
obj = "dsgjskdghsdkghsjkdghkdjkhgk43kjkfdkhjdkfjh";
longtest = GetSpaceForObject(obj);
obj += "aaafgfhdfhdfh"; ;
longtest = GetSpaceForObject(obj);
网路上好像获取对象内存占用空间方法不错,何况是.net的C#版本
不过书中好像有介绍:例如int占用4字节,long暂用8字节
char占用1字节,string根据实际情况来
你搜索下sizeof关键字
我不愿意对我目前没有需求而不了解的东西进行探讨!
////////////////////最新更新
觉得你这问题有点意思,刚才google下,所以我将方法打包送给你
using System;
using System.Xml;
using System.IO;
using System.Threading;
using System.Runtime.Serialization.Formatters.Binary;
class Test
{
static void Main()
{
long longtest = GetSpaceForObject("aaaaaaaaaaa");
}
static long GetSpaceForObject(object obj)
{
MemoryStream memory = new MemoryStream();
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(memory, obj);
memory.Position = 0;
return memory.Length;
}
}