我有一个运行时组件,需要int16*
给定的原始指针Platform::Array<uint16>
。像一样int16 buffer[20]
,但是在编译时我不知道大小。
如何在不给缓冲区固定大小的情况下获得此信息?
ConvertArray(const Platform::Array<uint16>^ bytes)
{
int16 buffer[bytes->Length]; // doens't work
int16 buffer[20]; // works, but I never know what size it needs to be
....
}
有什么建议怎么做?
如果您需要的只是获取指向数据的原始指针(例如,将其提供给某些C库),则通常可以从更高级别的数据结构中获取此类指针。
您可以从一个原始指针Platform::Array<T> array
与array.Data()
。
同样,你可以得到从原始指针std::vector<T> vec
用vec.data()
。
但是执行此操作时要注意的一件事:根据数据结构(请参阅其文档),以这种方式获得的原始指针在修改数据结构时可能会失效。在这种情况下,std::vector
在插入或删除元素(即更改大小)时会发生这种情况,因为实现可能会选择为内容重新分配大小不同的内存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句