[Dev-C++] Erreur de segmentation...
bonjour à tous, j'ai un ch'ti problème avec une classe servant à lire/écrire dans des fichiers. Cette classe est contenu dans une dll et l'ensemble fonctionne bien sauf (évidement) une fonction membre....
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
void
CFileIO::ReadWord(WORD *wBuf)
{
char *szBuf = NULL;
szBuf = new char[sizeof(WORD) + 1];
if ( szBuf )
{
memset(szBuf, 0, sizeof(WORD));
m_iofile.read(szBuf, sizeof(WORD));
memcpy(wBuf, szBuf, sizeof(WORD));
*wBuf = INVW(*wBuf);
delete [] szBuf;
}
}
void
CFileIO::ReadString(string &strBuf)
{
WORD SizeBuf;
int iSize;
char *szBuf = NULL;
ReadWord(&SizeBuf);
iSize = SizeBuf;
szBuf = new char[iSize + 2];
if ( szBuf )
{
memset(szBuf, 0, iSize + 1);
m_iofile.read(szBuf, iSize);
strBuf = szBuf;
}
delete [] szBuf;
} |
La fonction ReadWord marche très bien, je l'utilise ailleurs sans problème.
Le hic c'est quand je debug avec gdb j'ai une erreur de segmentation
sur une instruction du genre :
Code:
1 2 3 4 5 6 7 8
|
CFileIO myfile;
string strString;
'
' ici le code d'ouverture du fichier
'
myfile.ReadString(strString); // <- gdb me trouve un SIGSEGV |
Voyant la simplicitée du code de la fonction ReadString je ne crois pas qu'il y est d'erreur. Alors dois-je chercher ailleurs dans mon code ?
Ayant passer quelques temps la-dessus j'ai quelques questions qui me viennent :
- dans 'szBuf = new char[iSize + 2];' le 'iSize' peut-etre de quel type (int, WORD, DWORD...) ?
- cette instruction 'strBuf = szBuf;' fonctionne par copie ou non ?
- y a-t-il une version C++ des fonctions 'memset' et 'memcpy' ?
merci d'avance de vos réponses et bonne journée à tous