awdrg
22.04.2010, 23:36
fixed
Проблема: при распаковке текстового gz файла функция верно выводит количество распакованых байт, но затем крашится по непонятной причине, не окончив работу.
sasha@sasha-desktop:~$ ./gziptest
9
Segmentation fault
Ubuntu 9.10
Строка 9 байт.
Исходник:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <zlib.h>
using namespace std;
main()
{
gzFile zfp;
char * text = new char[256];
text[0] = '\0';
void * buf = &text;
zfp = gzopen("file.gz","r");
cout << gzread(zfp,buf,255) << endl; выводит кол-во распак. байтов файла (9)
cout << text; //до этого момента не доживает, text должен изменяется (распаковыватся) через указатель buf строкой выше.
gzclose(zfp);
return 0;
}
Сам файл читается системой без проблем.
И еще интересует такой вопрос: как выгоднее распаковывать ответ сервера по http? Этот способ требует запись в файл на жестком диске, что не совсем выгодно.
Проблема: при распаковке текстового gz файла функция верно выводит количество распакованых байт, но затем крашится по непонятной причине, не окончив работу.
sasha@sasha-desktop:~$ ./gziptest
9
Segmentation fault
Ubuntu 9.10
Строка 9 байт.
Исходник:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <zlib.h>
using namespace std;
main()
{
gzFile zfp;
char * text = new char[256];
text[0] = '\0';
void * buf = &text;
zfp = gzopen("file.gz","r");
cout << gzread(zfp,buf,255) << endl; выводит кол-во распак. байтов файла (9)
cout << text; //до этого момента не доживает, text должен изменяется (распаковыватся) через указатель buf строкой выше.
gzclose(zfp);
return 0;
}
Сам файл читается системой без проблем.
И еще интересует такой вопрос: как выгоднее распаковывать ответ сервера по http? Этот способ требует запись в файл на жестком диске, что не совсем выгодно.