我正在關注一個用於管理IP地址的C++ msdn參考。示例中的內存分配使用malloc而不是new。這是我的理解,malloc不應該在C++中使用。我會如何將這些malloc轉換爲新的?如何用新的示例替換malloc
中的代碼問題:
MIB_IPADDRTABLE *pIPAddrTable;
DWORD dwSize = 0;
DWORD dwRetVal;
pIPAddrTable = (MIB_IPADDRTABLE*) malloc(sizeof(MIB_IPADDRTABLE));
if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER)
{
free(pIPAddrTable);
pIPAddrTable = (MIB_IPADDRTABLE *) malloc (dwSize);
}
if ((dwRetVal = GetIpAddrTable(pIPAddrTable, &dwSize, 0)) != NO_ERROR)
{
printf("GetIpAddrTable call failed with %d\n", dwRetVal);
}
printf("IP Address: %ld\n", pIPAddrTable->table[0].dwAddr);
printf("IP Mask: %ld\n", pIPAddrTable->table[0].dwMask);
printf("IF Index: %ld\n", pIPAddrTable->table[0].dwIndex);
printf("Broadcast Addr: %ld\n", pIPAddrTable->table[0].dwBCastAddr);
printf("Re-assembly size: %ld\n", pIPAddrTable->table[0].dwReasmSize);
if (pIPAddrTable)
free(pIPAddrTable);
。在_modern C++ _中應該使用[適當的RAII容器,比如'std :: vector'](http://stackoverflow.com/a/15690742/1629821),而不是使用'new []'。 –