【发布时间】:2010-10-12 03:14:45
【问题描述】:
我有一段由一位非常老派的程序员编写的代码:-)。它是这样的
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分配的所有字节,即sizeof(ts_request_def) + (2 * 1024 * 1024), 或者只有结构大小的字节sizeof(ts_request_def)您是否发现这种方法有任何明显的问题,我需要与我的老板讨论这个问题,并希望指出这种方法的任何漏洞
【问题讨论】:
-
"the blocks" -- 这个问题假设 malloc (和 free )可以区分其参数的加数并产生两个“块”,因为计算中有一个
+,这显然是荒谬的.
标签: c coding-style malloc