【发布时间】:2016-12-27 10:47:01
【问题描述】:
在 C++/CLI 中,以下两个是相同还是不同?
System::String ^source("Hello World");
System::String ^source= gcnew System::String("Hello World");
第一个在堆栈上,第二个在堆上吗?
还是它们都在堆上?
.Net 对象我相信只有引用,它们不能像 C++ 允许的那样在堆栈上创建。谁能解释一下?
【问题讨论】:
-
.NET 同时具有堆和堆栈类型。
-
@Matteo:C++/CLI 不是 C++,你知道吗?
-
@Deduplicator:C++/CLI 是 C++ 的超集,它允许将标准 C++ 与托管内容混合。考虑到(例如)许多在 C++/CLI 方面有一定经验的人(比如我)确实遵循 C++ 标签而不是 C++/CLI,我认为同时使用这两个标签并没有什么坏处。痴迷地删除 C++ 标签以寻找纯度 IMO 只是幼稚。
-
@MatteoItalia:C++/CLI 充其量是基于 C++。相比之下,托管 C++ 尝试(或成功?)成为超集,但最终失败了。无论如何,如果您对这两个标签都感兴趣,欢迎您关注这两个标签。
标签: .net c++-cli heap-memory