édiT: J'ai trouvé la raison de la différence: seulement dans Visual Studio les fichiers d'entrée sont ouverts (ils ont été ajoutés à la solution et (plus important) placés dans le répertoire windows de la solution), donc ça a marché là-bas.Différent comportement-VisualStudio Débogueur sur exe
Mais quand je tente d'exécuter le fichier EXE généré, il ne lit pas les fichiers en raison de la chaîne de chemin des fichiers (travaillé dans VS) « ../fileName »
des suggestions (il travaillera en les deux cas)?
Dans le code principal:
string testFileName = "[email protected]"; //channel output file name
string bitsFileName = "sentBits4.dat"; //original sent bits file name,NO initial zero added
//Works in Visual Studio only
string path = __FILE__; //gets source code path, include file name
path = path.substr(0,1+path.find_last_of('\\')); //removes file name
path1= path+testFileName; //adds input file to path
path2=path+bitsFileName; //adds input file to path
//Works in Application EXE only
path1= testFileName;
path2=bitsFileName;
Cela pourrait être dû à l'utilisation de variables non initialisées. Lors de l'exécution dans un débogueur, le débogueur efface toute la mémoire, y compris la pile utilisée par les variables locales. Cela signifie que toutes les valeurs sont nulles et que les pointeurs sont 'NULL'. Mais lors de l'exécution en dehors des débogueurs, ces valeurs sont indéfinies et souvent très aléatoires. Donc, si vous avez une vérification des pointeurs 'NULL', mais n'initialisez pas le pointeur, ce ne sera pas' NULL' et le programme utilisera ce pointeur même s'il ne pointe sur rien de ce que vous avez alloué, et vous avez un indéfini comportement. –