Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Myho

[Resolvido] Criar um vetor de ponteiros dinamicamente

Recommended Posts

Bom, gostaria de saber se é possivel criar um vetor de ponteiros dinamicamente...

Meu programa recebe de um arquivo o numero de frames de determinada animação, entao eu precisaria de tantos arrays de ponteiros quanto o numero de frames da animacao, e em cada vetor desses eu vou alocar valores inteiros.

Caso nao tenha ficado claro, vou tentar exemplificar:

 

Um arquivo bmp tem 160 de largura por 40 de altura e contem 4 frames. Eu quero separar cada frame em um array de inteiros, entao nesse exemplo eu preciso criar 4 ponteiros pra poder alocar 1600 posicoes em cada.

 

 

Se alguem souber como fazer isso da uma ajuda aew xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu me acostumei a usar new em vez de malloc, e realloc nunca usei. Com esses sou capaz de criar novos ponteiros? Alocar simplesmente eu consigo, e o problema nao eh a necessidade de alocar mais espaco para o mesmo ponteiro, mas sim criar novos ponteiros e poder alocalos.

 

Se a imagem tem 8 frames preciso de 8 ponteiros, se a imagem tem 5 frames preciso de 5 ponteiros... e cada um desses ponteiros eh q serao alocados.

 

seria algo como um

frame = new int*[tamanho]
entende? um novo array de ponteiros inteiros e entao cada um desses ponteiros sera alocado:

for(int i=0; i < tamanho; i++)
{
   frame[i] = new int[outro_tamanho];
}

Eu sei q nao posso fazer new int*, mas foi soh pra passar a ideia do eu quero, se é que isso pode ser feito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, esse link nao me ajudou. Mas achei um exemplo em C e converti pra C++, vou postar aqui caso alguem um dia precise! Nao eh dificil, eu que me enrolei.

Até porque fica mais facil usando vector ou deque da STL. Nao deixa de ser uma maneira facil de se trabalhar com alocacao de memoria quando se precisa de um vetor bidimensional.

Bom, caso alguem tenha se interessado, vai o codigo para consulta.

 

C++

#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;

int main(void)
{
srand(time(NULL));
int **vetor;
int tam;
cout << "Quantidade de vetores e tamanho deles: ";
cin >> tam;
vetor = new int*[tam];
for(int i = 0; i < tam; i++){   
	vetor[i] = new int[tam];   
} 
for(int i=0;i<tam;i++)
{
	for(int j=0; j < tam; j++)
	{
			vetor[i][j] = rand() % (tam*10);
	}
}
for(int i=0;i<tam;i++)
{
	cout << endl << "Imprimindo linha: " << i << endl;
	for(int j=0; j < tam; j++)
	{
			cout << vetor[i][j] << "-";
	}
}
system("pause");
return 0;  
}

e em C

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

int main(int argc, char *argv[])
{
	int **vetor;
	int tam;
	int i,j;
	srand(time(NULL));
	printf("Digite o a quantidade e o tamanho dos vetores: ");
	scanf("%d",&tam);
	vetor = (int **) malloc( tam * sizeof(int*));   
	if( vetor == NULL)   
		printf("Out of memory");   
	// Aloca cada ponteiro 
	for(i = 0; i < tam; i++)   
	   vetor[i] = (int * )malloc(tam * sizeof(int)); 
	// Preenche com alguns valores 
	for (i=0;i<tam;i++) {
		for(j=0;j<tam;j++) {
		   vetor[i][j] = rand() % 100;
		}
	}
	//Imprime os valores
	for (i=0;i<tam;i++) {
		printf("\nImprimindo linha: %d\n",i);
		for(j=0;j<tam;j++) {
		   printf("%d-",vetor[i][j]);
		}
	}
	system("pause");
	return 0;  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.