Como usar malloc dentro de uma função em C

Vamos a mais um tutorial,

Na realidade isto não chega a ser um tutorial, mas algo que tive que aprender e que não achei em lugar nenhum falando sobre isso. Vamos aos detalhes…

Problema->Passar um ponteiro para uma função em C e dentro desta função era determinado o tamanho e os elementos deste ponteiro

Como tentei fazer-> Inocentemente fiz a função como o código abaixo:

void function(int *ptr, int n) {
    ptr = (int*)malloc(sizeof(int)*n);
    //outros comandos
}

O que aconteceu de errado? -> Na minha cabeça pensava que “ptr” ia ser ‘malocado’ e ia possuir um novo valor depois que a função fosse executada, mas não foi o que aconteceu. Quando terminava a função “ptr” ficava do mesmo jeito que começou, não apontando para ninguém. Pesquisei na net algum exemplo deste tipo e não encontrei, então quebrei a cabeça sozinho.

Solução -> Mudei o código e deixei ele assim, depois de muitos testes:

void function(int **ptr, int n) {
    (*ptr) = (int*)malloc(sizeof(int)*n);
    (*ptr)[0] = 5;
    //outros comandos
}

O código que chama esta função ficou assim:

int main() {
    int *ptr,
        n;

    //outros comandos

    function(&ptr, n);

    //outros comandos
}

É isso ai. Espero que este mini-tutorial seja útil para vocês. Até a próxima

Anúncios

Um comentário sobre “Como usar malloc dentro de uma função em C

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s