我有一段由一位非常老派的程序员编写的代码:-)。它是这样的
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)
您是否看到这种方法有任何明显的问题,我需要与我的老板讨论这个问题,并希望指出这种方法的任何漏洞