Jean.Phelippe Posted November 10, 2011 Report Share Posted November 10, 2011 Fala galera, sou novato na área, queria saber como posso contornar um problema de vetores e matrizes double em CEu tenho um programa que tem que ler e armazenar ~2100 numeros double, alem de utilizar vetores int da mesma ordem de grandezaporém meu programa da falha de segmentação ou trava se eu coloco vetores maiores que 350 posiçõesExiste algum meio de trabalhar com vetores e matrizes de tamanho grandes(2000+) em C?Abraços Quote Link to comment Share on other sites More sharing options...
0 _Miguel_ Posted November 10, 2011 Report Share Posted November 10, 2011 Bom dia jeanbem teoricamente vetores são infinitos mais sabemos q n e bem asim por que memoria não e infinitavocê tem certeza a maquina que esta rodando o programa tem memoria o suficiente pra isso? Quote Link to comment Share on other sites More sharing options...
0 Jean.Phelippe Posted November 10, 2011 Author Report Share Posted November 10, 2011 Bom dia MiguelMeu Pc tem 2Gb de memoria RAM acho que não é problema, fora que este programa é um exercicio de faculdade proposto, funcionando muito bem pra uma entrada de 130 posições, mas para uma de 2060 ele trava, acho que tenho que usar alocação de memoria, pelo que estou pesquisando mas não faço idéia de como fazer...Eu defini uma constante para dar o numero de posições dos vetores, se eu coloco 300 roda muito bem mas se eu aumento pra 400 ele trava, muito estranho não? Quote Link to comment Share on other sites More sharing options...
0 _Miguel_ Posted November 10, 2011 Report Share Posted November 10, 2011 Ah entendi o seu problema!nunca tive um problema relacionado a issovo fazer alguns testes e analises daqui a pouco te falo as observações:D Quote Link to comment Share on other sites More sharing options...
0 _Miguel_ Posted November 10, 2011 Report Share Posted November 10, 2011 Bem Jean vejamos eu fiz um codigo simplis para testareu uso a IDE Code blocks com o copilator minGWeu fiz um vetor doble com 5000 posições e preechi todos eles e madei mostralosn deu nein um erro e o tempo de execução foi inferior a 1 segundotalvez e um problema com seu codigo poste o quem sabe posso ajuda-lo :D Quote Link to comment Share on other sites More sharing options...
0 Jean.Phelippe Posted November 10, 2011 Author Report Share Posted November 10, 2011 (edited) Miguel valeu a ajuda cara, deve ser algo que eu fiz mesmo então, porque ele da um erro 0xC0000005 algo relacionado com falha de segmentação estou usando o ubuntu gdb pra tentar localizar o erroAbraço---EDIT-----------Surgiu um novo problema, fazendo umas vistoria dentro do programa noto que ao entrar numa função, esta chama uma outra, até ai beleza só que após realizar a função chamada ela altera os valores de algumas variáveis que não fazem parte da função: por exemplo Função1(int n, int m, double A) {.... /*aqui n = 10 e m = 20 por exemplo*/ Função2(int n, int m....); /*Função2 em nenhum momento altera n ou m apenas usa nos for()*/ /*aqui n e m mudam totalmente de valores*/ } ----------------------------------------------------------------- EDIT2: SOLUÇÃO DO PROBLEMA: Porque estava dando falha de segmentação: Eu declarava um vetor de 200 casas e na função definia a entrada de um vetor de 100 casas, logo ele "escapava" da memoria que eu defini.Ex: #define MAX1 1000 #define MAX2 500 Função1(int Vetor1 [MAX2]...) /** Erro ai, deveria ser MAX1, ele esta assumindo que eu vou colocar um vetor de 500 posições **/ { ... /*operações com Vetor1*/ } int main(){ int Vetor[MAX1]; Função1(Vetor...); /*Jogo na função um vetor de 1000 posições*/ ...}----O tópico pode ser trancado pela moderação...---- Edited November 10, 2011 by Jean.Phelippe Quote Link to comment Share on other sites More sharing options...
0 mJi Posted November 11, 2011 Report Share Posted November 11, 2011 Só uma dica: Ao passar vetores como parâmetros de uma função, não há a necessidade de colocar o número de posições.Passe como um ponteiro, ou com os colchetes vazios. Isso evita esse tipo de erro. Quote Link to comment Share on other sites More sharing options...
Question
Jean.Phelippe
Fala galera, sou novato na área, queria saber como posso contornar um problema de vetores e matrizes double em C
Eu tenho um programa que tem que ler e armazenar ~2100 numeros double, alem de utilizar vetores int da mesma ordem de grandeza
porém meu programa da falha de segmentação ou trava se eu coloco vetores maiores que 350 posições
Existe algum meio de trabalhar com vetores e matrizes de tamanho grandes(2000+) em C?
Abraços
Link to comment
Share on other sites
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.