c - C 中的指针和段错误?

标签 c

我是 C 的新手,所以请更正这个问题中的任何内容,而且我的问题也可能太含糊了。我有这样的代码,但出现了段错误。我在网上读到,当你访问一个指向任何东西的指针时,通常会发生段错误

struct apple get(char* name) {
    struct apple a;
    a.name = name;
    return a;
}
struct apple* read(){
    struct apple* ap = (struct apple*)malloc(2*sizeof(struct apple));
    ap[0] = get("bob");
    return ap;
}

// loop through in another function which reads a pointer to an
// apple object in the array and then accesses apple->name

当它访问 apple->name 时出现段错误。我假设这是因为 apple 对象被声明为局部变量,后来被 c 释放了???我真的不知道为什么我会遇到段错误或如何修复它或 c 如何处理在函数中初始化为局部变量的释放结构。谁能告诉我这是怎么回事,谢谢!

最佳答案

好吧,当指针指向某些错误的时,就会发生段错误,而当指针为空时则不一定。

您发布的代码片段没有任何错误:"bob" 是一个 char* 在程序的生命周期内保持有效,并且返回apple 是按值完成的,因此您也不会返回指向本地的指针。问题很可能出现在迭代 read() 返回的苹果的代码中。

关于c - C 中的指针和段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870934/

相关文章:

c - 同步线程 - C

iphone - 如何将 nsstring 转换为二进制并将二进制转换为十六进制

c - insmod : Unknown symbol in module issue

c - 使用 Sublime Text 3 在 Linux 终端中显示 C 构建结果

c - 使用 DFS 查找迷宫中的所有路径

c - 如何在特定范围内创建新的随机整数

c - 如何获取传递给 C 代码中的 Autotools 配置脚本的 --prefix 值?

c - Spritesheet 动画与视频渲染

c - 为什么在任意内存位置设置值不起作用?

python - 在 Python 中交互运行外部可执行文件