我正在尝试将一堆WCHAR添加到缓冲区中。这个函数就是将其添加到我的缓冲区的方法。
DWORD add_to_buffer(BYTE *databuffer, WCHAR *path, WCHAR *value_name, DWORD type, BYTE *data, DWORD data_size, DWORD already_added) {
DWORD path_size = wcslen(path) * 2;
DWORD value_name_size = wcslen(value_name) * 2;
WCHAR *type_name = reg_type_to_wchar(type);
DWORD type_size = wcslen(type_name) * 2;
DWORD total_length = already_added + path_size + value_name_size + type_size + data_size;
*databuffer = realloc(databuffer, total_length);
CopyMemory(databuffer, path, path_size);
CopyMemory(databuffer + path_size, value_name, value_name_size);
CopyMemory(databuffer + path_size + value_name_size, type_name, type_size);
CopyMemory(databuffer + path_size + value_name_size + type_size, data, data_size);
return total_length;
}
在第二次调用
add_to_buffer()
时,realloc()失败了。 我基本上一遍又一遍地调用这个函数,同时添加信息并根据需要使其变得更大。 我不确定如何解决这个问题,因为在进入函数时,VS中的一切看起来都是正确的。 databuffer没有在此函数之外释放。
&
运算符)。 - Adrian Molesizeof(WCHAR)
。 - koder