c - 在函数中分配结构的 char** 成员
问题描述
我有一个包含 char** 的结构,我需要在函数中分配其成员,但以下分配不起作用:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char **clist;
} rule;
void assign(rule *rule) {
char buf[128] = "hello";
rule->clist[0] = buf;
}
int main()
{
rule rule;
rule.clist = malloc(sizeof(char*) * 8);
assign(&rule);
printf("%s\n", rule.clist[0]);
return 0;
}
在 main 函数中进行如下分配是可行的:
char buf[] = "hello";
rule.clist[0] = buf;
解决方案
char buf[128]
是在assign函数的上下文中分配的堆栈。它不能以这种方式传递下去,因为函数返回后内存就消失了。你需要先使用char *buf;
然后再做buf = malloc(128);
。
推荐阅读
- javascript - 检查 onChange 是否与 setState 一起正常工作
- javascript - jQuery 在 Internet Explorer 11 中不起作用
- javascript - 使用 Javascript Array 添加 HTML 表格行和列,不起作用
- sql - 如何有效地查询具有修订值的表?
- r - 使用 grid.echo() 从非默认设备复制绘图
- ssl - 将 .PFX 证书转换为 .PEM 时出现问题
- ffmpeg - 从 h.264 IP 摄像机到 Web 浏览器的实时流式传输
- java - 如何在 Eclipse 中测试 Java 库
- javascript - 在渲染道具函数中使用反应钩子
- java - `mvn test` 执行哪些测试类?