Ir ao conteúdo
  • Cadastre-se
Batista Bittencourt

Alocação de memória

Recommended Posts

Bom dia pessoal.

 

Sou novato na área de programação, e atualmente estou tendo muita dificuldade de compreender um exercício que meu professor da faculdade passou para entregarmos esta semana.

Agradeço a muito a quem poder me ajudar.

 

Exercício:

 

1 - Criar um vetor estático que tenha em cada posição, a referência para uma variável que teve memória alocada dinamicamente.

2 - Criar um vetor estático que tenha em cada posição, a referência para outro vetor alocado dinamicamente. Em cada posição pode existir um vetor de tamanho diferente. Você deverá saber qual o tamanho do vetor armazenado naquela posição para poder percorrê-lo. Dica: Vetor de structs?!?!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1)

Não estou seguro si é isso, use lazo for para implementar os exemplos eu farei sem para facilitar a comprençao.

int *vetor[3];
vetor[0] = (int*)malloc( sizeof(int*) );
vetor[1] = (int*)malloc( sizeof(int*) );

vetor[2] = (int*)malloc( sizeof(int*) );
//liberar é importante
free(vetor[0]);
free(vetor[1]);
free(vetor[2]);
//e por ultimo liberar o vetor
free(vetor);

2)

int *vetor[3];
vetor[0] = (int*)malloc( sizeof(int*)*10 );
vetor[1] = (int*)malloc( sizeof(int*)*10 );

vetor[2] = (int*)malloc( sizeof(int*)*10 );
//isso é igual a uma matriz de 3X10
vetor[1][7]= 100;
De vetor só tem o nome, vetor de vetores é uma matriz sempre.
O exemplo anterior não deixa de ser uma matriz, porém é uma matriz de 3X1, é algo estupido pois poderia ser un vetor mais fácil, por isso não sei se é isso o que ele quer realmente, porém é exatamente o que ele quer, o vetor guarda uma referencia a outra variável alocada dinamicamente. porém pense no estupido que seria você criar uma matriz parecida a essa: int matriz[3][1];, melhor diretamente fazer matriz[3]; por isso acho meio estupido heuhuehheu.
 

//cada um deve ser liberado igualmente que foi reservado.
free(vetor[0]);
free(vetor[1]);
free(vetor[2]);
//e por ultimo liberar o vetor
free(vetor);

Se puder comprovar com algum amigo antes de entregar faça, o a ver si alguém mais entra e nos da uma luz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×