Joao Miguel Posted March 24, 2013 at 08:33 PM Report #500226 Posted March 24, 2013 at 08:33 PM (edited) Boa noite. Estou com um problema/duvida que vou tentar explicar de forma a que percebam o que pretendo. Portanto, tenho uma estrutura de listas ligadas qualquer: typedef struct entradas { //blabla //blabla //... struct entradas *seg; } *entradas, nodo_entradas; Tenho uma função: int tamanho(entradas ent); que calcula a quantidade de elementos dessa lista ligada. Agora, tenho ainda esta estrutura: typedef struct aux { //blabla //blabla //... } aux; typedef struct lista_aux { int n; aux a[??????]; } lista_aux; O que pretendo é que, tanto o "int n" como os "??????" da estrutura "lista_aux" tenham o valor da quantidade de elementos da lista ligada acima. Normalmente faz-se um #define MAX (numero inteiro) para os "???????" o problema é que não sei esse valor, vai depender da quantidade de elementos da lista ligada. Há alguma forma de fazer isto? Obrigado. Edited March 25, 2013 at 02:00 AM by Joao Miguel GeSHi
Marzkor Posted March 25, 2013 at 01:31 AM Report #500252 Posted March 25, 2013 at 01:31 AM (edited) malloc e calloc Edited March 25, 2013 at 01:31 AM by Marzkor
pmg Posted March 25, 2013 at 09:30 AM Report #500263 Posted March 25, 2013 at 09:30 AM Como diz o Marzkor, tens que usar memória dinâmica. Depois de saberes quantos elementos precisas, reserva o espaço necessário com malloc(). Se precisares de alterar o tamanho desse espaço de memória, usa realloc() e, quando já não precisares da memória, não te esqueças de libertar a memória para outros fins com free(). What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
PsySc0rpi0n Posted March 25, 2013 at 09:40 AM Report #500265 Posted March 25, 2013 at 09:40 AM (edited) pmg, não existem umas limitações do realloc para quem usa versões mais recentes do Windows? Edited March 25, 2013 at 09:40 AM by PsySc0rpi0n Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
pmg Posted March 25, 2013 at 10:25 AM Report #500272 Posted March 25, 2013 at 10:25 AM pmg, não existem umas limitações do realloc para quem usa versões mais recentes do Windows? Acho que não. Não encontro nenhuma limitação na documentação do Visual Studio 2012. Excepto pela necessidade de incluir o header <malloc.h> (que não existe no Standard) tudo o que está no MSDN parece muito normal. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Joao Miguel Posted March 25, 2013 at 07:23 PM Author Report #500348 Posted March 25, 2013 at 07:23 PM (edited) Devo fazer então?: entradas ent; lista_aux list; //Funcao que acrescenta elementos à lista ligada; int tam = tamanho(ent); list.n = tam; list.a = (aux) malloc(tam * sizeof(aux)); //ou list.a = (int) malloc(tam * sizeof(int)) ? Obrigado Edited March 25, 2013 at 07:23 PM by Joao Miguel
Marzkor Posted March 25, 2013 at 09:10 PM Report #500363 Posted March 25, 2013 at 09:10 PM Atenção a função malloc retorna um ponteiro.
PsySc0rpi0n Posted March 26, 2013 at 08:37 AM Report #500406 Posted March 26, 2013 at 08:37 AM Acho que não. Não encontro nenhuma limitação na documentação do Visual Studio 2012. Excepto pela necessidade de incluir o header <malloc.h> (que não existe no Standard) tudo o que está no MSDN parece muito normal. Ok. É que a nossa professora disse que algumas versões mais recentes do Windows vinham com uma espécie de protecção de memória que não permitia que os programas alterassem a memória inicialmente reservada para eles ou algo assim parecido e até me pediu para eu testar em Linux... Não sei então ao que se referia ela... Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now