仍然是一个初学者,试图掌握内存分配。在以下代码中
#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;
}
我的问题是:
谢谢你的进阶。从python迁移到c是很多不学习的事情,但是我对学习c!:P非常兴奋。
发布于 2021-04-20 13:30:50
您的结构总是具有相同的大小:sizeof (int) + sizeof(char *)
,因为您的结构只存储value
的地址。如果要为字符串分配内存,则必须使用malloc kv[n].value
。
https://stackoverflow.com/questions/67179872
复制相似问题