社区
C#
帖子详情
请教值类型对象的内存分配时机?
ggyz
2005-03-25 11:33:53
值类型对象的内存是何时分配的?谢谢
...全文
159
13
打赏
收藏
请教值类型对象的内存分配时机?
值类型对象的内存是何时分配的?谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ggyz
2005-03-31
打赏
举报
回复
这几天郁闷中,没心思讨论技术问题了,揭贴。
ps:再次感谢速马。
ggyz
2005-03-26
打赏
举报
回复
呵,首先感谢速马大哥的回答。
第一个问题,其实我是想问,引用,就是指针啦,要多大空间。C++里面是4个字节吧(32位么),C#把名字改了,不知道有什么变化没有?
第二个问题,呵呵,太晚了,明天再来写。
速马
2005-03-26
打赏
举报
回复
.NET里头都是引用,只能说猜测GC上的引用和C++的指针占用的空间一样
我也不确定
但是太关心这个问题已经没啥意义了吧
在.NET你不可能不去用GC堆
速马
2005-03-25
打赏
举报
回复
// C#里面引用要多大空间啊
GC堆会无限增长直道内存和虚拟内存全部耗尽,然后系统提出内存不足警告
堆栈的话是有限制,可能弹出StackOverflowFlow异常
一般只要你不用死循环的代码去检查JIT的能力的话,StackOverflowFlow异常是不会出现的
// 另外,“如果此值类型有构造函数,则在类型的构造函数起始处执行”这句话有点问题吧。
比如说这样的代码:
class Person
{
DateTime Birthday = new DateTime(xxx);
public Person(){}
}
编译后就变成了:
class Person
{
DateTime Birthday;
public Person()
{
Birthday = new DateTime(xxx);
}
}
等价的代码就是这个样子,我是这个意思
hyj_828
2005-03-25
打赏
举报
回复
help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref
ggyz
2005-03-25
打赏
举报
回复
恩,听速马大哥这么一说我明白了。
在方法体中声明的时候分配空间。值类型的话就是分配了这个对象的空间了。引用类型分配存放一个引用的空间。顺便问一下,C#里面引用要多大空间啊?
另外,“如果此值类型有构造函数,则在类型的构造函数起始处执行”这句话有点问题吧。值类型的构造函数是不会在new它所属的引用类型对象的时候执行的。必须另外显式调用。
delphi_dcs
2005-03-25
打赏
举报
回复
什麼叫值類型啊大哥
速马
2005-03-25
打赏
举报
回复
对于在函数内部的情况:
在C#和VB.NET编译器,值类型总是在线程堆栈上安排空间
这样的话,当程序执行到声明值类型变量的时候,在栈上创建空间
对于值类型作为类型的成员的情况:
在new这个对象的时候分配内存空间(在GC Heap),如果此值类型有构造函数,则在类型的构造函数起始处执行
可以去分析下IL代码
ggyz
2005-03-25
打赏
举报
回复
赋值的时候
或在new的时候(自动赋默认值)
这个肯定不对哦
ggyz
2005-03-25
打赏
举报
回复
我问的是值类型哦
yezie
2005-03-25
打赏
举报
回复
当aa = null后,内存又释放了
yezie
2005-03-25
打赏
举报
回复
赋值的时候
或在new的时候(自动赋默认值)
ggyz
2005-03-25
打赏
举报
回复
up
大家对这个问题没兴趣?
【JVM系列】读懂Java虚拟机(JVM)这一篇就够了!
内存管理1、运行时数据区域1.1 堆1.2 虚拟机栈1.3 本地方法栈1.4 方法区栈1.5 程序计数器1.6 直接内存2、Java
对象
2.1
对象
的创建2.2
对象
的内存布局2.3
对象
的访问定位垃圾回收和
内存分配
3.1
对象
已死吗?...
c++后端相关(加深记忆,抄的github和小林coding)
宏定义相当于字符替换,而const是常量声明;宏定义是预处理器处理,而const是编译器处理;宏定义五
类型
安全检查,而const有...第一阶段,使用 new 在堆上寻找可用内存,分配给
对象
;第二阶段,调用构造函数生成
对象
。
高并发内存池
这篇文章是小博主的第一个正式的项目,因此是边写边学...因为想把所有相关知识以及自己视角下的心得呈现出来,在项目的主线下或许还会引出周边知识…当前项目实现的是一个高并发的内存池(也可以叫做高性能内存池)。
java知识点汇总
从jvm的角度出发,延伸到
对象
在内存中的存储空间Java类初始化顺序java中创建
对象
的方式
对象
克隆,浅克隆,深克隆构造方法
对象
与引用静态static抽象类和接口ObjectString特征为什么不可变String类不可变性的好处?...
Java实现面向
对象
编程
1.1用面向
对象
设计电子宠物系统... 14 1.1.1为什么使用面向
对象
... 14 1.1.2使用面向
对象
进行设计... 15 1.2通过创建
对象
实现领养宠物功能... 17 1.2.1创建类的
对象
... 17 1.2.2构造方法及其重载... 23 1.2.3...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章