终于想通了,栈和堆都是数据空间。一开始看到“把对象分配到堆上”,误以为是把对象方法的代码也放到堆上,堆上存放的应该只是这个方法的入口。不知对不对?到现在看的书和视频教程都没有把这个问题书清楚。
  还没有想通子类继承的基类的成员,是不是就是把基本的成员也放到子类对象的空间上了,他们在内存中应该是呈现出什么样的形态?哪位大侠明白的请指教一下!

解决方案 »

  1.   

    什么样的形态?那得看你数据时什么样的存储结构了
     c#中通过new运算符向内存申请空间,比如A a=new a();此时虽然a没有实例化,但是在内存的某一个地方已经保存了改对象的信息,包括地址啊,类型等等,只不过就是没有实例值,你要说它存放在哪,那得看内存空间给它的分配了,还有,像那些成员,得看他们是按照什么方式存储了,这就涉及到数据结构的知识了,看他是线性存储呢还是非线性存储呢,如果是线性的就又分顺序存储和链式存储了,非线性的就是树和图结构了;
      

  2.   

    声明类的时候时候,肯定会分配有一段内存空间的,这段内存空间在栈上。
    class A;
    A就相当于这段内存空间的代号,这段内存空间用来存放A的对象的引用(对象在堆上的地址)。