iliya
написал 17 декабря 2004 года в 14:37 (901 просмотр)
Ведет себя
как мужчина; открыл 13 тем в форуме, оставил 196 комментариев на сайте.
Есть два варианта.
Первый:
Создаем список и там малочим память для каждого куска, а потом объеденяем.
Второй:
char* data;
char *new_data;
new_data=(char*) malloc(sizeof(char)*(size+buffer_size));
memcpy(new_data,data,size);
memcpy(new_data+size,buffer,buffer_size);
free(data);
…
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
С точки зрения производительности 2-й вариант лучше.
если число эл-тов известно то лучше char[x][y][MAX_ELEM_SIZE];
Нет не известно.
А почему второй лучше?
Там ведь копирование идет каждый раз.
потому, что мы выделяем память не под каждый элемент, а только один раз под все элементы. Операция выделения памяти — затратная
Да, нет там выделений будет много, смысл то в том что это дело в цикле идет.
Но я понял второй лучше.