C, C++: Usando a seção de dados

As variáveis da pilha de execução, são automaticamentes desalocadas quando a mesma retorna. No caso do exemplo a seguir, o retorno da função teste() é o endereço de memória da string “Teste123” (ou seja, para onde str aponta e não str propriamente dito).

char *teste(void)
{
    char *str = "Teste123";

    return str;
}

Esta string está alocada na seção de dados do programa e existirá durante toda sua execução, não se restringindo ao escopo da pilha, o que torna segura sua utilização.

Vale lembrar que esta string é protegida somente para leitura, qualquer tentativa de escrita em uma de suas posições, fatalmente irá gerar uma falha de segmentação.

This entry was posted in C, CPP and tagged , , , , , , , , . Bookmark the permalink.

One Response to C, C++: Usando a seção de dados

  1. Para isto o interessante e utilizar const char* ao inves de char* em situações deste genero!

Leave a Reply

Your email address will not be published. Required fields are marked *