C语言在malloc() 分配到新内存后, 必须对新分配的内容进行初始化, 否则会出现野指针问题. 不然free()的时候会让你左右为难.
if(block_buffer == NULL) {
block_buffer_size = settings.planner_buffer_blocks;
//尝试尽量多的分配缓存空间.
while((block_buffer = malloc((block_buffer_size + 1) * sizeof(plan_block_t))) == NULL) {
if(block_buffer_size > 40)
block_buffer_size -= block_buffer_size >= 250 ? 100 : 10;
else
break;
}
memset(block_buffer, 0, block_buffer_size * sizeof(plan_block_t) ); //全部清0. 防止野指针
}