Jump to content

Illegal instruction: 4


killezio

Recommended Posts

Este é o erro que me dá quando eu compilo o código:

void fillPath(short int *path,short int costumer){
short int e;
for ( e = 0;e < costumer;e++)
    path[e] = 1;
}
begin(){
(...)
short int path[flavor];
fillPath(path,costumer);
}

No entanto quando mudo o argumento do fillpath para &costumer e o recebo como apontador, tudo funciona bem. alguem me sabe explicar que erro é este? pelo que estive a ver na internet... nao percebi

PS: o título é a mensagem de erro completa 😛

Edited by thoga31
GeSHi
Link to comment
Share on other sites

void fillPath(short int *path,
             short int costumer){ // <- isto é um valor
}
begin(){
(...)
short int path[flavor];            // <-- isto é um array
fillPath(path,costumer);
}

ps : quando se apresenta um problema com mensagem de erro do compilador, é de bom tom apresentar toda a mensagem

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

void fillPath(short int *path,
		  short int costumer){ // <- isto é um valor
}
begin(){
(...)
short int path[flavor];			// <-- isto é um array
fillPath(path,costumer);
}

ps : quando se apresenta um problema com mensagem de erro do compilador, é de bom tom apresentar toda a mensagem

já editei a mensagem. mas o "costumer" é uma variável

Link to comment
Share on other sites

Juro que é a única mensagem que o compilador dá,hippo. O mais estranho é que quando faço "path[e] = 0" em vez de "path[e] = 1" o erro passa a "floating point: 4" (acho que esse é o nome) que significa que estou a tentar aceder a uma posicao de memoria que nao pertence ao programa.

EDIT: o erro chama-se "Segmentation fault";

Edited by killezio
Link to comment
Share on other sites

o erro acontece quando compilo. o sistema operativo é o último do mac. suponho que a versão do gcc seja a última. não sei, nunca tive que mexer nisso porque funciona no terminal do mac. Mas se este informação não for suficiente eu procuro isso

e eu inicio a variável <costumer> simplesmente assim na função begin

short int costumer;
Link to comment
Share on other sites

então vamos fazer assim.

fazes um print screen da console a apresentar a linha de compilação assim como toda a informação que te é apresentada.

depois metes em algum serviço gratuito de alojamento de imagens e colocas aqui o link para se poder ver que realmente o gcc não dá informação nenhuma

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

desculpa, quando compila não dá erro nenhum, apenas o usual warning do main que não afeta nada. Só dá esse erro quando eu executo o programa

http://prntscr.com/9y4bpo

já tinha visto isso antes de perguntar aqui, mas não faz sentido. aí dizem que tem haver com estar a usar comandos ou binários de uma versão diferente do mac cuja a atual já não conhece como tratá-los. mas aqui,neste programa, não estou a fazer nada de complicado

Link to comment
Share on other sites

hum agora já não me dá esse erro. na altura tinha a certeza que era por causa dessa parte do código mas como agora experimentei outra vez fazer apenas um programa com essa amostra de código já não me acontece nada de mal... infelizmente não vou conseguir saber do que se tratava porque acabei por recomeçar a fazer o programa e já não tenho o código que tinha na altura

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.