Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problème adress error exception
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Problème adress error exception

Posté le 22/03/2016 17:00

Voila, le C-Engine crach lorsque qu'on le lance deux fois de suite .

Il plante au moment où j'assigne les scripts aux objets et vice versa.

Voici le code de la fonction qui plante, elle peu être exécuter une fois mais pas deux fois.

void Object::AffectScript(Script & VScript)
{
    if(&VScript != NULL)OScript = &VScript;
    if(OScript != NULL)OScript- >AffectObject(this);
}

void Object::AffectScript(Script * VScript)
{
    if(VScript != NULL)OScript = VScript;
    if(OScript != NULL)OScript- >AffectObject(this);
}



1, 2 Suivante
Dark storm En ligne Membre d'honneur Points: 10963 Défis: 176 Message

Citer : Posté le 22/03/2016 17:07 | #


Ça peut pas être un problème de fuite de mémoire ? Si le C-engine bouffe pas mal, c'est une piste. Sinon c'est quoi l'erreur exacte ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 22/03/2016 17:08 | #


Au début cpu address error exception by data write access at: DD576821

puis Nonexsiting memory by data read access at : FFFFFFE4

et enfin System Error : ADDRESS(W)
TARGET = DD576821
PC = 00000000

J'ai aussi pensé à une fuite de mémoire mais elle est entièrement résolut.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Dark storm En ligne Membre d'honneur Points: 10963 Défis: 176 Message

Citer : Posté le 22/03/2016 17:12 | #


T'as regardé de ce coté (section EBR) ?

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 22/03/2016 17:15 | #


Ce qui est bizarre c'est que ça marche bien une fois et l'autre non.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Dark storm En ligne Membre d'honneur Points: 10963 Défis: 176 Message

Citer : Posté le 22/03/2016 17:19 | #


C'est pour ça que je reste persuadé que ça vient d'une fuite mémoire.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 22/03/2016 17:23 | # | Fichier joint


Voici le code complet de gestion des objets + un exemple d'utilisation.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Dark storm En ligne Membre d'honneur Points: 10963 Défis: 176 Message

Citer : Posté le 22/03/2016 17:44 | #


Beurk, du rar…
Je regarderai quand j'aurai un peu plus de temps.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 23/03/2016 18:40 | #


Dark storm a écrit :
T'as regardé de ce coté (section EBR) ?

Darks, réfléchis un peu, ça ne peut pas être une EBR.

Fife, je pencherais pour un effet de bord. T'es sûr que le bug vient de cette section du code ?

Quand tu dis lancer le C-Engine de fois de suite, est-ce que ça implique la terminaison d'AddIn_main() et le redémarrage de l'add-in ?
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 23/03/2016 18:52 | #


Non cela consiste à lancer deux fois la fonction Jeu() ici de Kirby.cpp dans la pièce jointe.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 23/03/2016 18:56 | #


J'ai regardé un peu le code concerné, clairement le problème vient pas de cette fonction (en tout cas pas de la version pointeur, j'ai horreur des références donc je préfère ne pas faire de paris sur leur fonctionnement).

T'es sûr que le paramètre que tu lui envoies (le VScript) est valide ?
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 23/03/2016 19:07 | #


Si tu regarde le "kirby.cpp", je donne en paramètre le script à la fonction AffectScript des objets. Oui c'est bien cette ligne qui bug car lorsque j'enlève les scripts le jeu ne plante pas.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 24/03/2016 20:39 | #


Curieux. T'as essayé de passer les pointeurs plutôt ?

Ah oui, juste au passage :
Fife86 a écrit :
Oui c'est bien cette ligne qui bug car lorsque j'enlève les scripts le jeu ne plante pas.

Ça ne veut rien dire, c'est même le principe des effets de bord que de venir foutre le bordel : par expérience j'ai parfois eu des bugs qui s'arrêtaient quand je commentais des printf() alors que ceux-ci n'y étaient évidemment pour rien
Amael Hors ligne Membre Points: 253 Défis: 9 Message

Citer : Posté le 30/03/2016 20:43 | #


Perso, j'ai déjà eu un pb similaire avec Gravity Duck quand je sors du jeu (retour au menu calto) puis re rentre directement.
Si pour lui vous avez trouvé pq, peut être que c'est la même raison pour Five.
Si c'est possible, c'est fait; si c'est impossible, cela se fera.

Mes programmes (À noter sous peine de ban )
Notez les !
Monopoly bank Pratique si vous perdez les billets
Remplissez facilement vos listes avec Statistiques
Et des conversions des unités du système métrique.
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 01/04/2016 12:50 | #


Oui mais pour Gravity Duck la sortie se fait avec la touche [MENU] pendant un GetKey(), non ? Du coup on ne sort pas vraiment de l'application...
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 01/04/2016 17:51 | #


Voici le code que j'ai écrit pour essayer:


int Test2Add()
{
    const unsigned char ICube[]={0xff, 0xff, };
    Sprite S_Cube(ICube , 12 , 12);
    Animation A_Cube(S_Cube);

    Object Cube;
    Cube.OTransforms->SetXY(10,10);
    Cube.ORender->SetRender(A_Cube);
    Cube.ORigibody = new Rigibody(&Cube);

    STest Script_Test;
    //STest * Script_Test = new STest;

    Cube.AffectScript(Script_Test);

    return 1;

}

int Test2()
{
    int i = 0;

    while( i >= 0)
    {
        Test2Add();
        i++;

        ML_clear_vram();

        PrintV(10,10,i);

        ML_display_vram();

        Sleep(25);
    }

    return 1;

}


Le code s’arrête à une exécution avec l'objet initialisé normalement.
Sinon il marche parfaitement avec le pointeur qui est en commentaire.

Ajouté le 01/04/2016 à 18:14 :
Problème semi-résolut. Puisque passer l'objet par référence bug, je vais tout faire par pointeur.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 01/04/2016 18:19 | #


Ben voilà. Respectez les pointeurs, au moins une fois dans votre vie. Depuis le temps que je vous raconte ça
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 01/04/2016 18:38 | #


J'ai le même problème avec la map.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 01/04/2016 19:26 | #


T'as essayé la même méthode ou le problème se pose aussi avec l'utilisation de pointeurs ?
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 01/04/2016 19:44 | #


Aussi avec l'utilisation des pointeurs.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Lephenixnoir Hors ligne Administrateur Points: 17447 Défis: 142 Message

Citer : Posté le 01/04/2016 20:00 | #


Je peux avoir la partie du code précisément qui plante ?
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 49 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd