首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串的Malloc分配

字符串的Malloc分配
EN

Stack Overflow用户
提问于 2021-04-20 13:23:11
回答 1查看 38关注 0票数 1

仍然是一个初学者,试图掌握内存分配。在以下代码中

代码语言:javascript
运行
复制
#include <stdio.h>
#include <stdlib.h>

typedef struct key_value
{
    int key;
    char *value;
} key_value;

int main(void)
{
    int keys = 2;
    key_value *kv = malloc(sizeof(key_value) * keys);

    kv[0].key = 1;
    kv[0].value = "Value of Key 1";

    kv[1].key = 2;
    kv[1].value = "Value of Key 2";

    printf("Key = %d\nKey value = %s\n", kv[0].key, kv[0].value);
    printf("Key = %d\nKey value = %s\n", kv[1].key, kv[1].value);


    free(kv);
    return 0;
}

我的问题是:

  1. 是由malloc存储在分配中的.key和.value的值吗?如果是,那么malloc为*value的值初始化了多少个字符,因为它是一个没有设置大小的字符串?如果不是,.key & .value存储在哪里(我猜malloc只是保存指向这些值对的指针)?

  1. 是在将数组放入结构时指定数组的最大大小(即char值)还是对编码器来说是可选的?

谢谢你的进阶。从python迁移到c是很多不学习的事情,但是我对学习c!:P非常兴奋。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-20 13:30:50

您的结构总是具有相同的大小:sizeof (int) + sizeof(char *),因为您的结构只存储value的地址。如果要为字符串分配内存,则必须使用malloc kv[n].value

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67179872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档