Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 6.7.2010, 9:28 |
size_t это не int, a unsigned int, максимальное значение на 32битной системе = 4 ГБ Один хрен, назвать как угодно можно Главное - смысл. А знаковый/не знаковый легко приводится Даже если предположить, что это знаковое, всё равно массивов с таким индексом вряд ли встретишь. Даже если это массив байтов |
|
DIMEDROLL | Дата 6.7.2010, 8:16 |
size_t это не int, a unsigned int, максимальное значение на 32битной системе = 4 ГБ size_t - это тип-размер, используется для индексации массивов например, указания размера массивов и т.п. |
|
Алексей1153 | Дата 3.7.2010, 20:22 |
что такое void *buffer Удивляешь... В языках C/C++ void - это пустой тип. Указатель на void - указатель на любой тип (поэтому необходимо в нагрузку знать размер элемента плюс размер массива, или же размер массива в байтах сразу) В данном случае buffer - буфер с данными, а size (как я полагаю) - размер буфера в байтах почему его можно записывать в файл записать в файл можно что угодно. что за тип size_t ? зачем он нужен? чисто блажь разработчиков. Мысленно считай его типом int на данный момент вылетает и я не очень понимаю как в QtCreator отследить ошибку в какой момент вылетает ? Запустить под отладкой и поставить точку останова в начале функции static size_t write(void *buffer, size_t size, size_t nmemb, void *stream) Потом шагать по строчке |
|
deex | Дата 3.7.2010, 20:11 |
спасибо, но повторю ещё раз: - я хочу переписать на Qt - что такое void *buffer -- почему его можно записывать в файл и почему оно void? - что за тип size_t ? зачем он нужен? ещё раз достигнутое:
на данный момент вылетает и я не очень понимаю как в QtCreator отследить ошибку |
|
Алексей1153 | Дата 2.7.2010, 15:48 |
А вот тут автору надо уточнить size_t n = size * sizeof(float); может, size - это уже размер в байтах (как у белых людей принято) ? |
|
DEADHUNT | Дата 2.7.2010, 15:41 |
лучше как-то так:
|
|
Алексей1153 | Дата 2.7.2010, 15:35 |
а так
size_t - обычно это typedef int size_t |
|
deex | Дата 2.7.2010, 11:42 |
использую curl, чтобы скачать картинку он вызывает внешнюю функцию для записи в файл curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write); в оригинале она записывает данные в файл через fwrite() решил переписать на Qt: static size_t write(void *buffer, size_t size, size_t nmemb, void *stream) { QFile file("test.png"); file.open(stderr, QIODevice::WriteOnly); file.write(buffer, size * sizeof(float)); file.close(); return; } 1. file.write не хочет принимать void *buffer. что это вообще такое? 2. просто уточнить - curl вызывает эту функцию один раз? или по мере скачивания файла, дописывая полученные данные? 3. что вернуть в ретурн, чтобы был size_t ps заодно, прошу прояснить для меня что вообще такое size_t частно вижу его, но в стандартных типах его нет. зачем его используют и почему пишут именно t? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 22:30 |