#1 

16-11-2008 16:46:50

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

Petit post pour discuter de ton soucis Ramis de segmentation.

Tout d'abord, j'ai constaté un petit soucis dans ton code:

ISceneNode* balle[mp5.getMunitions()];

Le compilateur (VC++) me dit et à juste titre expression constante attendue

Logique, tu ne peux pas créer de façon dynamique un tableau dans ton code, du moins pas comme cela.
Par contre tu peux écrire un truc du genre
ISceneNode** balle;
*balle = new ISceneNode[mp5.getMunitions()];

par contre, ISceneNode ne doit pas avoir de constructeur par défaut, de plus classe abstraite, donc soucis....


Force et sagesse...

Hors ligne


#2 

16-11-2008 16:54:15

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

Ah oui , tiens ...GCC ne m'avait même pas fait un warning ...Faut dire aussi que je code pas comme un dieu ^^'
Je vais essayer de résoudre ça ...
Mais bon , ce n'est pas la partie de mon code qui m'interesse le plus pour l'instant .
Je pense que l'erreur de segmentation vient d'une de mes classes Arme ou Player ...

Hors ligne


#3 

16-11-2008 17:00:02

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

Suivant le type de compilateur, cela passe en fait. Mais je ne suis pas sur que cela soit très sein effectivement.
C'est peut-etre même une partie de la réponse concernant tes soucis de segmentation mémoire....


Force et sagesse...

Hors ligne


#4 

16-11-2008 17:24:29

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

sinon utilise les file(file d'attente premier arriver premier servi)

#include <irr/irrlicht.h>
#include <queue>
using namespace std;


int main()
{
    queue<ISceneNode*> balle;
    //Pour ajouter une balle
    ISceneNode* toAdd= ......
    balle.push(toAdd);
    //Pour récupéré le premier élément ajouter
    ISceneNode* toRecup = bale.front();
    //Pour effacer le premier élément
    balle.pop();
    //Pour avoir la taille de la file
    bale.size();
}

/!\\ la fonction .size renvoie le nombre d'élément + 1 /!\\
/!\\ Si on fait .pop alors que la file et vide le programe plante toujours t'ester l'existence d'element avec .empty() qui renvoie un boolean /!\\


Hors ligne


#5 

16-11-2008 17:37:12

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

Oua , c'est intéressant ça pspmy , merci !

Hors ligne


#6 

16-11-2008 17:56:17

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

d r


Hors ligne


#7 

16-11-2008 18:15:15

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

pspmy Ecris:

d r


Force et sagesse...

Hors ligne


#8 

16-11-2008 18:15:53

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

sa veut dire : de rien x)


Hors ligne


#9 

16-11-2008 18:17:02

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

sinon ramis je te conseille d'utiliser une structure pour t'es balles


Hors ligne


#10 

16-11-2008 19:03:49

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

Une structure ? tu pense vraiment ?
Tu sais , c'était très secondaire ça .C'est juste pour ajouter une pointe de réalisme ...

Hors ligne


#11 

16-11-2008 19:05:29

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

sa permettra de mieux gérer tes balle et leur donner des attribut ex : explosif, rapide, fine, unique .....


Hors ligne


#12 

16-11-2008 19:11:06

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

sinon tu peut utiliser les vector et les iterateur pour les parcourir mais je sais pas si ce de ton niveau

résume sur les vector:
Les std::vector sont des conteneurs génériques standards implémentés sous forme de séquence et réalisés de telle sorte que toutes les opérations soient effectuées en un temps optimal.


Hors ligne


#13 

16-11-2008 19:33:19

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

.........
C'est pas de mon niveau big_smile
Par contre , une petite explication rapide en français courant m'interesserait bien smile
Sinon , pour mes problêmes de mémoire , j'ai pensé à un truc : peut être faudrait il faire un drop sur les mesh et les nodes des classes ? la segmentation est bien une histoire de fuite de mémoire , non ?

Hors ligne


#14 

16-11-2008 19:37:08

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

sa dépend sinon essaye avec xxx->remove();

mais je pense que ton erreur viens de ta déclaration de tableau en c tu peut seulement déclarer un tableau de taille fixe mais on peut le rallonger a la main au coup d'allocation mais c'est faute de plantage essaye avec les file pour commencez


Hors ligne


#15 

16-11-2008 19:56:18

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

pspmy Ecris:

mais je pense que ton erreur viens de ta déclaration de tableau en c tu peut seulement déclarer un tableau de taille fixe mais on peut le rallonger a la main au coup d'allocation mais c'est faute de plantage essaye avec les file pour commencez

En effet, et c'est pour cela qu'une fois lu et testé ton code, je suis partie sur cette piste là. Si une fois régularisé cette partie cela ne règle toujours vraiment
ton soucis, alors il sera temps d'explorer d'autres pistes.... wink


Force et sagesse...

Hors ligne


#16 

16-11-2008 20:00:30

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

Bon , me suis pas fatigué , j'ai passé cette partie là en commentaire : même résultat .
Une autre piste ?
J'vais aller corriger mon code en attendant smile Merci de votre aide en tout cas !

Hors ligne


#17 

16-11-2008 20:22:40

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

En testant un peu ton code, j'ai un crash systématique dans la fonction 'AttacherArme' de la classe Player.

Visiblement, le soucis se situe à partir de 'nodearme->setPosition(position)' , comme si le pointeur semblait ne pas être valide....


Force et sagesse...

Hors ligne


#18 

16-11-2008 20:24:27

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.246.220
Courriel

dsl la jai pas le code sous la main donc je peut pas vous aidez et la je vais regarder des épisode de kaamlot donc bon courage je reviens après


Hors ligne


#19 

16-11-2008 20:26:30

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

Un petit debug avec code::blocks m'a donné le même résultat , mais je n'y ai pas vraiment fait attention alors car j'ai écrit cette fonction il y a quelques jours et elle marchait très bien ... Pourtant , le code a l'air valable , non ?

edit : pspmy > http://www.2shared.com/file/4292241/25993139/fps.html voilà mon code smile

Hors ligne


#20 

16-11-2008 20:41:45

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

J'ai trouvé, en fait toujours dans la fonction 'AttacherArme' de la classe Player, ton pgm fonctionne bien si je commente la ligne
nodearme->setParent(arme.getCamera());

normal, arme.getCamera() = NULL wink


Force et sagesse...

Hors ligne


#21 

16-11-2008 20:44:02

ramis
Membres
Date d'inscription:
Messages: 92
IP: 92.133.214.145
Courriel

bah pourquoi ? elle est pas correcte cette ligne neutral ?
Comprend pas sad
En faisant
ICameraSceneNode* newcamera=arme.getCamera();
nodearme->setParent(newcamera);

ça marche ???

edit : ah ok ... bug de logique , alors ? neutral

Hors ligne


#22 

16-11-2008 21:36:16

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.152.82
Courriel

ramis Ecris:

ah ok ... bug de logique , alors ? neutral

alors ? la nuit porte conseil. Demain soir en rentrant du boulot je re-jetterais un œil à ton code

wink


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
570 invités en ligne
membre en ligne: -
RSS Feed