C++ 为POD分配适当的内存
我的回答收到了一条评论,关于我代码中的内存分配。我已经使用了<代码>新[] < /COD>和C++ 为POD分配适当的内存,c++,memory-management,C++,Memory Management,我的回答收到了一条评论,关于我代码中的内存分配。我已经使用了新[] < /COD>和 Dele[]/Cord],因为我以前读过,你不应该在C++中使用 MalCube()/For()/。有关守则主要是: ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES); GetAdaptersAddresses(0, 0, NULL, NULL, &outBufLen); PIP_ADAPTER_ADDRESSES pCurrAddresses = (IP_A
ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES);
GetAdaptersAddresses(0, 0, NULL, NULL, &outBufLen);
PIP_ADAPTER_ADDRESSES pCurrAddresses = (IP_ADAPTER_ADDRESSES *)new uint8_t[outBufLen];
//...
delete[] pCurrAddresses;
我要分配的内存字节大小来自函数getAdapterAddresses()
。
我的问题是:这段代码有什么问题吗?如果是的话,现代C++在内存分配的正确方法是什么?
-
<> >代码> MARROCKEY//FELE()/CUT>应该是毫无疑问的——它是C++代码,在使用<代码> MARROCK()/<代码>时,我看不出任何改进,而不是<代码> NeX[]/COD>这里。对吧?
对我来说似乎不合适-我可以写std::vector
是常量)std::vector字节(exputflen,0);PIP_适配器_地址pCurrAddresses=(IP_适配器_地址*)字节。数据()但是我会有一个坏消息 感觉,因为std::vector::data()
- 使用
似乎也很奇怪,因为我必须将其转换为原始指针std::unique_ptr
< C++ >第二个建议:<代码> STD::向量在大多数情况下是C++中正确的。
data()。C++标准确保DATA()返回指向POD的内存的连续指针。 <代码>:ST:::vector:(代码)< /Cal> >只在调用<代码> const < /C>向量时返回<代码> const t*<代码>。否则将调用非常量
重载,该重载返回T*
。