lorsque tu as des erreurs de segmentation, comme dit godrik, compile avec le flag de debug -g et ensuite lance valgrind ça te dira à quelle ligne tu fais une tentative d'accès illégale
sinon pour revenir à ton sujet initial, quand tu fais ça:
QFile* currentFile;
currentFile = new QFile();
tu déclares un nouveau pointeur currentFile (en plus de l'attribut currentFile de ton instance courante, mais il s'agit bien de deux variables différentes malgré le nom commun)
donc tu as currentFile, le pointeur que tu viens de crée (ce pointeur currentFile sera détruit une fois que tu seras sorti du bloc courant)
et this->currentFile le currentFile de l'instance courante
ensuite tu alloues dynamiquement un QFile dont l'adresse est affecté dans ton attribut currentFile (donc this->currentFile et non dans le pointeur currentFile que tu as déclaré précédemment)
donc, currentFile est nullptr et this->currentFile est bien alloué, donc il n'y aura pas segfault par la suite
par contre, dans le deuxieme cas
QFile* currentFile = new QFile();
ici this->currentFile sera nullptr, car tu alloues dans une nouveau pointeur qui ne sera plus accessible quand tu sortiras du bloc courant, donc ici tu auras une fuite mémoire en plus d'un segfault
Message édité le 02 mars 2015 à 18:51:22 par [denshaotoko]