J'ai un programme que j'ai construit pour RHEL5 32 bits et Ubuntu10 64 bits (C++ qt4.6). Quand je lance le programme sur ubuntu, toutes les variables sont initialisées sans que je doive coder cette initialisation. Mais quand j'exécute le programme sur RHEL, certaines des variables ne sont pas initialisées, j'ai remarqué qu'elles sont principalement de type entier et les valeurs typiques sont autour de 154280152. La chose amusante est que cela arrive juste dans quelques classes. Comment se peut-il?L'initialisation des variables ne se passe pas partout sur certaines plates-formes
mise à jour: voici un extrait de code, il est l'en-tête de l'une des classes où ce qui se passe (désolé pour la mise en page Je suis à la recherche dans ce moment):
#ifndef FCP_CONFIG_H
#define FCP_CONFIG_H
#include "ui_fcpConfig.h" #include
#include "fpsengine.h"
#include "fcp_cfg_delegate.h"
#define SET_COL 3
#define GLOBAL_KEY_COL 2
#define LOCAL_KEY_COL 1
#define ENABLE_COL 0
namespace Ui
{
class fcpConfig;
}
class fcpConfig : public QWidget
{
Q_OBJECT
public:
fcpConfig(QWidget *parent, FPSengine * FPS);
Ui::fcpConfigForm ui;
void setupFcpCfg();
private:
QWidget * myParent;
FPSengine * myFPS;
fcpCfgDelegate delegate;
QList<QSpinBox*>failOrderList;
QList<QRadioButton*>primaryList;
int numFCP;
QList<int>numFcpInEachSet;
int currentSet;
void updateSets();
void refreshFailorderDuringUserEdit(int fcpPos);
QSignalMapper * signalMapper;
QMutex mutex;
void sendSysStatusMsgAndPopup(QString msg);
int curSet; //the connected Fcp's Set
private slots:
void updateFcpFailOrderSpinBox(int absPos);
void on_twFCP_cellClicked(int row, int column);
void on_buttonBox_clicked(QAbstractButton* button);
private:
template <class T>
void buildObjList(QObject * location,QList<T> *cmdEleList,QString objName, int numObj){
T pCmdEle;
cmdEleList->clear();
for(int i=0;i<numObj;i++){
pCmdEle = location->findChild<T>(objName+QString("%1").arg(i+1));
cmdEleList->append(pCmdEle);
}
}
//used to send SysStatus and popuMsg when number of active Fcps in Set not 1
QString activeList; //build a string representing Fcp numbers that are active.
int iNumActive;
};
#endif // FCP_CONFIG_H
Postez votre code, il est très difficile d'aider autrement. –
Les variables non initialisées peuvent contenir * n'importe quoi *. Il peut toujours être zéro sur certaines plateformes, mais votre code ne devrait jamais compter dessus. –
Toutes les questions sur les SO ne proviennent pas d'un petit projet. Faites-le descendre jusqu'à un petit reproducteur, postez le code, vous obtiendrez probablement des réponses plus significatives. –