如果 x 类通过 y.create(new z) 调用 y,z obj 是否会像 y 一样在 x 的堆栈中创建?这是假设我们是按值传递,而不是 ref 或 ptrs
问问题
42 次
2 回答
1
有几件事:
堆栈/堆位于进程(应用程序)级别,而不是对象级别。整个应用程序共享一个堆栈(至少在您的问题的上下文中),无论它使用多少对象。
除非您示例中的“z”是值类型(如结构),否则它不会完全驻留在堆栈中。如果“z”是一个类,那么它“生活”在堆上,只有在堆栈上对它的引用。
您真的应该阅读 Jon Skeet 的简短解释 - http://www.yoda.arachsys.com/csharp/memory.html - 特别是底部的“一个工作示例”。
于 2013-03-18T19:20:36.630 回答
0
对象 z 在应用程序分配的内存中创建。使用 new 创建对象时,每个函数都没有自己的内存区域。
我建议您阅读此页面上的内容,我当然会不时发现它很有用(即当我把事情搞混时)
于 2013-03-18T18:58:16.527 回答