假设我有一个为调用者分配内存的函数:
int func(void **mem1, void **mem2) {
    *mem1 = malloc(SIZE);
    if (!*mem1) return 1;
    *mem2 = malloc(SIZE);
    if (!*mem2) {
        /* ... */
        return 1;
    }
    return 0;
}
在第二个malloc()失败的情况下,我想听听你对free()分配内存的最佳方法的反馈.你可以想象一个更复杂的情况,有更多的错误退出点和更多分配的内存.
我正在Windows上编写本地网络扫描程序,以查找具有IP帮助程序功能的在线主机,这相当于nmap -PR没有WinPcap.我知道如果远程主机没有响应,SendARP将阻塞并发送arp请求3次,所以我用std::aync它为每个主机创建一个线程,但问题是我想每20ms发送一个ARP请求所以它不会太多在很短的时间内很多arp数据包.
#include <iostream>
#include <future>
#include <vector>
#include <winsock2.h>
#include <iphlpapi.h>
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
using namespace std;
int main(int argc, char **argv)
{
    ULONG MacAddr[2];       /* for 6-byte hardware addresses */
    ULONG PhysAddrLen = 6;  /* default to length of six bytes */
    memset(&MacAddr, 0xff, sizeof (MacAddr));
    PhysAddrLen = 6;
    IPAddr SrcIp = 0;
    IPAddr DestIp = 0;
    char buf[64] = {0};
    size_t start = time(NULL);
    std::vector<std::future<DWORD> > vResults;
    for …