Jump to content
Fórum Script Brasil
  • 0

Stackalloc


Denis Bittencourt Muniz

Question

Fala galera!

No C#, existe uma palavra chave chamada 'stackalloc' que que aloca um bloco de memória.

A dúvida:

int* memory = stackalloc int[30];

Na expressão acima, o que siginifica aquele '30'?

Falows!

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Como assim? Desculpe, mas não entendi.

Falows!

P.S: O que é 'stack'? E como assim quantidade? Não posso alocar quantos quiser?

Link to comment
Share on other sites

  • 0
Como assim? Desculpe, mas não entendi.

Falows!

P.S: O que é 'stack'? E como assim quantidade? Não posso alocar quantos quiser?

Quando um programa está em execução existem dois tipos de memória onde os dados podem ser armazenados, a saber: stack e heap. A stack é onde variáveis locais (de funções e métodos) e parâmetros de funções são armazenados e todo o resto é armazenado na heap. Quando se cria um objeto, ele em si é armazenado na heap e sua referência é armazenada na stack. Com a utilização de stackalloc você estará armazenando os valores diretamente na stack (e não na heap). E o acesso à stack é um pouco mais rápido do que à heap.

Certo? wink.gif

Graymalkin

Link to comment
Share on other sites

  • 0

OK! valeu! Entendi o conceito de 'heap' e 'stack'. Mas o que seria o número? Eu posso fazer isso, por exemplo: int* x = &memory[31]. Ok, mas o índice não é 30?

Falows!

Link to comment
Share on other sites

  • 0
OK! valeu! Entendi o conceito de 'heap' e 'stack'. Mas o que seria o número? Eu posso fazer isso, por exemplo: int* x = &memory[31]. Ok, mas o índice não é 30?

Falows!

Não, ali não é o índice. É a quantidade de inteiros que você quer alocar na stack. E ali entra um ponteiro justamente porque isso é um vetor (array).

Abraços,

Graymalkin

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.6k
×
×
  • Create New...