0

我是一名 C++ 程序员,试图围绕 C# 进行思考,并发现了一些我关心的问题。要声明一个数组,您必须使用 New 运算符对吗?但这不会让垃圾收集器参与进来吗?

假设我有一个函数正在创建一个仅在该函数中使用的数组,并且每帧被调用数千次,那么所有这些对 New 运算符的调用不会给垃圾收集器带来很大的开销吗?

在 C++ 中,这些将是在堆栈上声明的数组,一旦函数结束就会退出范围,并且性能开销将是最小的,但在 C# 中,我担心在这种情况下垃圾收集器可能会占用多少性能。

那么我是否以正确的方式思考这个问题?这里涉及到垃圾收集器吗?它会引起问题吗?有没有更好的“C#方式”来做到这一点?

4

1 回答 1

0

基本上,不用担心垃圾收集器,它知道自己在做什么,而且非常擅长。

如果你正在做图像的东西,那么是的,你可能会遇到问题......你可以绕过这个,例如你可以使用 stackalloc http://msdn.microsoft.com/en-us/library/cx9s2sy4.aspx

但这意味着您的代码必须设置为“不安全”。

int* frameData;
frameData = stackalloc int[200];
于 2012-06-26T02:49:42.210 回答