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 № 1basicamente, 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];