propiedad - ¿Cuándo necesitaría usar la palabra clave stackalloc en C#?



metodo con (5)

Desde MSDN :

Se usa en un contexto de código inseguro para asignar un bloque de memoria en la pila.

Una de las características principales de C # es que normalmente no necesita acceder a la memoria directamente, como lo haría en C / C ++ usando malloc o new . Sin embargo, si realmente desea asignar explícitamente algo de memoria, puede hacerlo, pero C # lo considera "inseguro", por lo que solo puede hacerlo si compila con la configuración unsafe . stackalloc permite asignar dicha memoria.

Es casi seguro que no necesita usarlo para escribir código administrado. Es posible que, en algunos casos, pueda escribir un código más rápido si accede directamente a la memoria; básicamente, le permite utilizar la manipulación del puntero que se adapta a algunos problemas. A menos que tenga un problema específico y el código inseguro sea la única solución, entonces probablemente nunca lo necesitará.

https://ffff65535.com

¿Qué funcionalidad proporciona la palabra clave stackalloc ? ¿Cuándo y por qué querría usarlo?


Es como Steve señaló, solo se usa en el contexto de código no seguro (por ejemplo, cuando desea usar punteros).

Si no usa un código inseguro en su aplicación C #, entonces nunca lo necesitará.


Pablo,

Como todos aquí han dicho, esa palabra clave dirige el tiempo de ejecución para asignar en la pila en lugar de la pila. Si está interesado en lo que esto significa exactamente, consulte este artículo .


Stackalloc asignará datos en la pila, que se pueden usar para evitar la basura que se generaría creando y destruyendo repetidamente matrices de tipos de valor dentro de un método.

public unsafe void DoSomeStuff()
{
    byte* unmanaged = stackalloc byte[100];
    byte[] managed = new byte[100];

    //Do stuff with the arrays

    //When this method exits, the unmanaged array gets immediately destroyed.
    //The managed array no longer has any handles to it, so it will get 
    //cleaned up the next time the garbage collector runs.
    //In the mean-time, it is still consuming memory and adding to the list of crap
    //the garbage collector needs to keep track of. If you're doing XNA dev on the
    //Xbox 360, this can be especially bad.
}

MSDN

esta palabra clave se utiliza para trabajar con la manipulación de memoria insegura. Al usarlo, tiene la capacidad de usar el puntero (una característica potente y dolorosa en C / C ++)





stackalloc