C++ 为POD分配适当的内存

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

我的回答收到了一条评论,关于我代码中的内存分配。我已经使用了<代码>新[] < /COD>和 Dele[]/Cord],因为我以前读过,你不应该在C++中使用<代码> MalCube()/For()/<代码>。有关守则主要是:

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::unique_ptr
    似乎也很奇怪,因为我必须将其转换为原始指针


< C++ >第二个建议:<代码> STD::向量在大多数情况下是C++中正确的。
data()。C++标准确保DATA()返回指向POD的内存的连续指针。

<代码>:ST:::vector:(代码)< /Cal> >只在调用<代码> const < /C>向量时返回<代码> const t*<代码>。否则将调用非
常量
重载,该重载返回
T*