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....
La fonction ReadWord marche tr�s bien, je l'utilise ailleurs sans probl�me.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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; }
Le hic c'est quand je debug avec gdb j'ai une erreur de segmentation
sur une instruction du genre :
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 ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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
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
Partager