nixp.ru v3.0

24 октября 2017,
вторник,
08:52:53 MSK

DevOps с компанией «Флант»
iliya написал 17 декабря 2004 года в 14:37 (466 просмотров) Ведет себя как мужчина; открыл 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);

metal

С точки зрения производительности 2-й вариант лучше.

decvar

если число эл-тов известно то лучше char[x][y][MAX_ELEM_SIZE];

iliya
decvar
если число эл-тов известно то лучше char[x][y][MAX_ELEM_SIZE];

Нет не известно.

А почему второй лучше?

Там ведь копирование идет каждый раз.

Fatal
iliya
А почему второй лучше?

потому, что мы выделяем память не под каждый элемент, а только один раз под все элементы. Операция выделения памяти — затратная

iliya

Да, нет там выделений будет много, смысл то в том что это дело в цикле идет.

Но я понял второй лучше.