私は非常に古い学校のプログラマーによって書かれたコードを持っています:-)。それはこのようなものになります
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 は常にメモリの連続ブロックを割り当てますか? このコードでは、ブロックが連続していない場合、コードは大きな失敗をするためです。
free(request_buffer)
実行すると、malloc ie によって割り当てられたすべてのバイトが解放されますかsizeof(ts_request_def) + (2 * 1024 * 1024)
、それとも構造体のサイズのバイトのみが解放されますかsizeof(ts_request_def)
このアプローチに明らかな問題はありますか。これについて上司と話し合う必要があり、このアプローチの抜け穴を指摘したいと思います。