我已经阅读了有关 的 MSDN 文档ILockBytes::SetSize()
,但它并没有准确回答我的 的实现是否SetSize()
应该保留现有数据。
例如,如果当前缓冲区大小为 100,并且SetSize(120)
被调用,它是否应该保留调整大小后的缓冲区的前 100 个字节中的数据?
另外,如果当前缓冲区大小为 100,并被SetSize(70)
调用,它是否应该保留调整大小后的缓冲区前 70 个字节的数据?
换句话说 - 我应该在 C++ 中调用realloc()
还是单独调用?alloc()
是的,现有的字节值应该被保留。扩展数组的大小只会将未指定值的新字节添加到数组末尾。而减小数组的大小只会从数组末尾截掉尾随字节。
如果扩展数组没有保留现有数据,那么通过以下方式将新字节写入数组末尾
ILockBytes::WriteAt()
将毫无意义:如何决定在内部实现扩展/减少逻辑取决于您。