IP 주소 관리에 대한 C++ msdn 참조를 따르고 있습니다. 이 예제에서 메모리 할당은 new 대신 malloc을 사용합니다. malloc을 C++에서 사용해서는 안된다는 것이 제 이해입니다. 이 malloc을 새로운 것으로 변환하는 방법에 대해 어떻게 생각합니까?예제에서 malloc을 new로 바꾸는 방법
링크 : MSDN REFERENCE
코드 문제 : 그들은 new
처럼 객체를 초기화하지 않기 때문에 당신은 새로운 표현와 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);
. 'new []'를 사용하는 대신에, _modern C++ _에서는'std :: vector'와 같은 적절한 RAII 컨테이너를 사용해야합니다 (http://stackoverflow.com/a/15690742/1629821). –