/ Matrizes / C # em comparação com arrays C ++ e o coletor de lixo - c #, arrays

Matrizes C # em comparação com arrays C ++ e o coletor de lixo - c #, matrizes

Eu sou um programador C ++ tentando envolver minha cabeçaem torno de C # e encontrei algo que eu estou preocupado. Para declarar um array, você precisa usar o operador New, certo? Mas não vai envolver o coletor de lixo?

Hipoteticamente, se eu tivesse uma função que eraA criação de uma matriz apenas para uso dentro dessa função e que estava sendo chamada milhares de vezes por quadro, não faria todas as chamadas para o operador New criar uma sobrecarga significativa para o coletor de lixo?

Em C ++, estes seriam matrizes declaradas nopilha que cairia fora do escopo assim que a função terminasse e a sobrecarga de desempenho seria mínima, mas em C # estou preocupado com o desempenho que o coletor de lixo pode assumir nesse caso.

Então estou pensando sobre isso da maneira certa? O coletor de lixo está envolvido aqui e causará problemas? Existe um "caminho C #" melhor para fazer isso?

Respostas:

0 para resposta № 1

basicamente, não se preocupe com o coletor de lixo, ele sabe o que está fazendo e é muito bom nisso.

Se você está fazendo coisas de imagem, então sim, você pode ter problemas ... você pode contornar isso, por exemplo, você pode usar stackalloc http://msdn.microsoft.com/en-us/library/cx9s2sy4.aspx

mas isso significa que seu código terá que ser definido como "inseguro".

int* frameData;
frameData = stackalloc int[200];