Myho 2 Denunciar post Postado Setembro 7, 2008 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
_Isis_ 202 Denunciar post Postado Setembro 8, 2008 Malloc,realloc. Compartilhar este post Link para o post Compartilhar em outros sites
Myho 2 Denunciar post Postado Setembro 8, 2008 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
_Isis_ 202 Denunciar post Postado Setembro 8, 2008 http://en.wikipedia.org/wiki/Malloc Compartilhar este post Link para o post Compartilhar em outros sites
Myho 2 Denunciar post Postado Setembro 9, 2008 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