Compilador_C++

Iniciado por Calister, 06 de Fevereiro de 2014, 15:26

tópico anterior - próximo tópico

Calister

Olá a todos
eu preciso de uma ajuda, neste momento eu estou usando o compilador g++ para a versão linux, eu preciso declarar vetores estáticos do tipo float. No meu programa eu preciso declarar 20 vetores float com 4.1x10 ^ 6 elementos cada. mas o compilador permite declarar 2.9x10 ^ 5 para cada vetor. é possível a utilização de mais memória  para vetor estatico com g++? Existe algum compilador para C++ (para linux) que  permiti a fazer isso?
Eu uso o Ubuntu 12.04 LTS, eu tenho um computador com (1,5 GB de memória RAM e outro com 3 GB de memória RAM), mas eu posso declarar apenas 2,9 x10 ^ 5 mesmo quando eu estou usando o dobro de memória RAM. Declaro as variáveis na área geral (antes do principal main() e das funções e classes), ou seja, fora da área de pilha.

Eu testei gfortran  (compilador Fortran) que permitem  declarar mais, vetores estáticos, mas porém meu código está em C ++! também eu não posso usar vetor dinâmico.

Por favor, alguém poderia me ajudar?

Obrigado !

Ricardo

irtigor

Qual é a mensagem que aparece?

Calister

Aparece a seguinte mensagem quando rodo pelo terminal (quando rodo pelo code blocks é a mesma mensagem em inglês.)

Falha de segmentação (imagem do núcleo gravada)

Abs

liegi

Sim, existe um compilador chamado codeblock. Você pode baixar gratuitamente no site do desenvolvedor.

lpds25

quando usava Codeblocks também não conseguia compilar nada sem que me aparecesse esse erro...
solução: mudei para Eclipse, compila tudo à primeira...
atualmente no meu laptop programo com Eclipse para C/C++, Netbeans para Java (sei que o Eclipse também trabalha com Java, mas acho melhor separar...) e Android Studio para Android
Utilizador Ubuntu nº 29843

zekkerj

Olá Calister,

Uma variável float, até onde me lembro, ocupava 6 bytes de memória.
Seu vetor ocuparia 6 * 4,1 * 10^6 = 2,46*10^7 ou aproximadamente 23,5MB, correto? Não me parece um tamanho tão gritante.

Você chegou a observar em que momento vc recebe a mensagem de falha de segmentação?
Tentou rodar seu programa no gdb, pra ver se consegue identificar o ponto de falha?

Em teoria, vc poderia adicionar a palavra chave "static" à declaração da variável, mas isso tem algumas implicações importantes no funcionamento do programa que vc precisa levar em conta antes de usar.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D