Ir para conteúdo
Fórum Script Brasil
  • 0

Aumentar tamanho de um vetor em C


Multibom Sat

Pergunta

Estou criando um algoritmo em C.

Tenho um vetor char Vet[MAX];, onde MAX é um valor pré definido. Mas, pelo menos no meu PC, quando digito um número muito grande (Ex.: MAX = 3000000) o programa não roda.

Ouvi dizer que tem como usar a função malloc pra contornar essa situação.

 

Algum filho de Deus pode, por favor, escrever o trecho do algoritmo que usa a função mallc?

Obrigado :-)

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia, o sistema operacional bloqueia pois nesse tipo de alocação, a memória que você pode usar é limitada.

Para usar grandes quantidade de memória você deve usar o malloc ou outra função similar para alocar a memória.

Vamos definir um vetor de um milhão de números inteiros e preenchê-lo usando o for.

Para executar essa operação o meu vetor vai consumir 1milhão X 4 bytes (tamanho do vetor), conforme o código abaixo.

#include <stdio.h>
#include <stdlib.h>

const int MAX=1000000;

int main(){
	//criando o vetor
	int *vetor=(int*) malloc(MAX*sizeof(int));
	//preenchendo o vetor.
	for(int i=0; i<MAX; i++, vetor++){
		*vetor=i;
	}
	//apontando o vetor para o primeiro elemento.,
	vetor-=MAX;
	//imprimindo o vetor.
	for(int i=0; i<MAX; i++, vetor++){
		printf("%d \n", *vetor);	
	}
}

Até mais.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...