В функции writeDmpFile
Я звоню writeFile
.Передача аргументов функции (int to size_t)
См. Код и комментарии.
Моя проблема - размер. В writeDmpFile
я вижу это 380316. Я пытаюсь передать его в writeFile.
Но в то время как наступая сюда, я получаю очень большое количество (3832907636190596508).
Что я делаю неправильно. Я бы ожидал, что 380316 будет пройден.
int writeFile(char *name, unsigned char *buff, size_t *size,const char *dir)
{
FILE * pFile;
chdir (dir);
pFile = fopen (name, "wb");
//(gdb) print *size
//$5 = 3832907636190596508
fwrite (buff , sizeof(unsigned char), *size, pFile);
fclose (pFile);
return 1;
}
int writeDmpFile(GTree *tree, char *filename)
{
char dmpfilename[32];
dmpfilename[0] ='\0';
dmpParams_t params;
params.buff[0] ='\0';
int size =0;
params.size=&size ;
g_tree_foreach(tree, (GTraverseFunc)writeDmpFileLine, ¶ms);
sprintf (dmpfilename, "InstrumentList_FULL.csv_%.*s", 15, filename);
//here (gdb) print size
//$1 = 380316
writeFile(dmpfilename, (unsigned char *)params.buff, (size_t *)&size , dmpdir);//(size_t *)params.size, dmpdir);
}
Вы на самом деле не бросить. Происходит неявное преобразование. – ciphermagi
@ciphermagi не существует неявного преобразования между типами указателей (кроме как с 'void *' и типами указателей объектов) – ouah
@ciphermagi: Это так? – alk