gpt4 book ai didi

char ** 我应该分配 (char*) 的大小还是 char * 字符串长度的大小?

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:43 27 4
gpt4 key购买 nike

我有一个像这样的动态结构:

struct network {
int count;
char** ips;
}

如果我知道每个字符串数组都是 16 个字节(即 INET_ADDRSTRLEN),因为它们是 IPv4 地址,如果我使用 sizeof(char*) * count 进行分配是否重要> 或 sizeof(char) * INET_ADDRSTRLEN * count?

例如:

// n is a pointer to a network

n->ips = realloc(n->ips, sizeof(char*) * n->count);

for (int i =0; i< n->count; i++){
n->ips[i] = malloc(INET_ADDRSTRLEN);
strcpy(n->ips[i], "127.0.0.1");
}

n->ips = realloc(n->ips, sizeof(char) * INET_ADDRSTRLEN * n->count);

for (int i =0; i< n->count; i++){
n->ips[i] = malloc(INET_ADDRSTRLEN);
strcpy(n->ips[i], "127.0.0.1");
}

此外,如果我采用第二种方式,我是否需要执行 n->ips[i] = malloc(INET_ADDRSTRLEN);

最佳答案

ips指向一个char *数组,所以它的buffer必须是sizeof(char *)的倍数,而不是sizeof(char)的倍数。

关于char ** 我应该分配 (char*) 的大小还是 char * 字符串长度的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41810712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com