У меня есть код, написанный очень старым школьным программистом:-). это похоже на это
typedef struct ts_request
{
ts_request_buffer_header_def header;
char package[1];
} ts_request_def;
ts_request_def* request_buffer =
malloc(sizeof(ts_request_def) + (2 * 1024 * 1024));
программист в основном работает над концепцией переполнения буфера. Я знаю, что код выглядит изворотливым. поэтому мои вопросы:
-
Всегда ли malloc выделяет непрерывный блок памяти?. потому что в этом коде, если блоки не смежны, код будет терпеть неудачу с большим временем
-
Выполняя бесплатный (request_buffer), он освободит все байты, выделенные malloc i.e sizeof (ts_request_def) + (2 * 1024 * 1024), или только байты размера структуры sizeof (ts_request_def)
-
Вы видите какие-либо очевидные проблемы с этим подходом, мне нужно обсудить это с моим боссом и хотелось бы указать на любые лазейки с этим подходом.