return 语句之前/期间的 C 分段错误

2024-03-31

我在 return 语句之前打印要返回的值,并告诉我的代码打印在函数调用之后立即返回的值。但是,在第一个打印语句之后和第二个打印语句之前,我遇到了分段错误(还值得注意的是,这种情况总是发生在第三次调用该函数时;从来没有第一次或第二次,也从来没有第四次或更晚)。我尝试打印出我正在处理的所有数据,以查看我的代码的其余部分是否做了一些可能不应该做的事情,但到目前为止我的数据看起来不错。这是函数:

int findHydrogen(struct Amino* amino, int nPos, float* diff, int totRead) {

    struct Atom* atoms;
    int* bonds;
    int numBonds;
    int i;
    int retVal;
    int numAtoms;

    numAtoms = (*amino).numAtoms;

    atoms = (struct Atom *) malloc(sizeof(struct Atom) * numAtoms);
    atoms = (*amino).atoms;

    numBonds = atoms[nPos].numBonds;

    bonds = (int *) malloc(sizeof(int) * numBonds);
    bonds = atoms[nPos].bonds;

    for(i = 0; i < (*amino).numAtoms; i++)
        printf("ATOM\t\t%d  %s\t0001\t%f\t%f\t%f\n", i + 1, atoms[i].type, atoms[i].x, atoms[i].y, atoms[i].z);

    for(i = 0; i < numBonds; i++) 
        if(atoms[bonds[i] - totRead].type[0] == 'H') {
            diff[0] = atoms[bonds[i] - totRead].x - atoms[nPos].x;
            diff[1] = atoms[bonds[i] - totRead].y - atoms[nPos].y;
            diff[2] = atoms[bonds[i] - totRead].z - atoms[nPos].z;

            retVal = bonds[i] - totRead;

            bonds = (int *) malloc(sizeof(int));
            free(bonds);

            atoms = (struct Atom *) malloc(sizeof(struct Atom));
            free(atoms);

            printf("2 %d\n", retVal);

            return retVal;
        }
}

正如我之前提到的,我运行它的前两次它工作正常,第三次它打印正确的 retVal 值,然后在到达我调用该函数的位置之前在某处出现段错误,我这样做:

hPos = findHydrogen((&aminoAcid[i]), nPos, diff, totRead);
printf("%d\n", hPos);

返回时的分段错误通常表示堆栈损坏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

return 语句之前/期间的 C 分段错误 的相关文章

随机推荐

  • 在 Eclipse 中调试 Android Widget 代码

    我在 Android 编程的帮助下开始解锁 Android 曼宁 http www manning com ableson 这是一本来自圣诞老人的好书 在运行了一些小测试和示例之后 我开始为我自己的应用程序开发概念 我希望我的应用程序作为家
  • WebStorm 可以在我编写代码时自动格式化代码吗?

    在 Visual Studio 中 当我输入一些特殊字符 如 时 它会自动格式化相关代码段 但在 WS 中 什么也没有发生 我试图找到这个选项 但最终没有结果 e g In VS if we type something like var
  • 为 PostgreSQL 8.3 安装 PL/Ruby

    这是为了能够发展postgres具有嵌入式功能ruby代码 但我一直无法建造它 据建议http www robbyonrails com articles 2005 08 22 installing untrusted pl ruby fo
  • 三元赋值的“写出”等价物是什么?

    我有一个结构是不可默认构造 我想根据条件为该结构的对象分配不同的值 由于该结构是非默认构造的 因此不可能声明它的统一对象 但是 可以使用三元来做到这一点 struct foo foo int a foo generateFoo1 retur
  • Swift 中的抽象类和抽象函数[重复]

    这个问题在这里已经有答案了 我来自 Java 现在我想在 Swift 中创建抽象类 我有这门课Java 我想做同样的事情Swift如果可能的话 abstract class Fetcher private Item items public
  • 调用 android.speech.RecognizerIntent API 会导致连接错误对话框,并在日志中显示“calling_package”警告

    我编写了一个小应用程序 允许用户通过按钮选择使用语音搜索的语言 而不是依赖用户的语言偏好 有时您希望用日语进行语音搜索 而不将整个 UI 切换为日语 我正在我的 HTC Desire Android 2 1 Softbank x06ht 上
  • GItlab:有什么方法可以选择变量值作为下拉菜单

    在 Gitlab ci 中 我们声明了变量 如下所示 USER NAME value description Enter Username File Name description Enter the file name 它只提供一个文本
  • 删除字符的正确方法是什么**

    我有一个 char 基本上是一个字符串数组 我需要删除它 确保清除所有指针的正确方法是什么 经验法则是你需要一个delete or delete 对于每个new or new 您发出的 所以如果你这样做 char pp new char N
  • 未找到与 Doctrine2 多态关联的字段

    我有一个多态关联 类表继承 我需要使用 DQL 来查询特定子类的实体 可以在 WHERE 子句中使用 x INSTANCE OF Entity 来完成 现在我需要为该子类设置特定的条件 但我收到此错误 类 Person 没有名为 Stude
  • Nextjs 和 Jest 变换/transformIgnorePatterns 不适用于 esm 模块

    我对此进行了大量研究 并找到了相当多的解决方案 我找到了一种解决方法 并希望获得transform and transformIgnorePatterns在职的 然而 我唯一能做的似乎就是在我的内部手动添加一些模拟模块 mocks fold
  • 如何更改 Android 选项卡小部件的背景?

    我的类扩展了 TabActivity TabHost mTabHost getTabHost TabHost TabSpec tab1 mTabHost newTabSpec tab1 TabHost TabSpec tab2 mTabHo
  • 使用 Fluent Api 时复合键 EF Core 出现错误

    所以我在 Entity Framework Core 中有以下类 我正在尝试进行代码优先迁移 但我一生都无法弄清楚如何为这项工作提供流畅的 API public class Participants public Activity Acti
  • 通过网络扫描发现服务器IP地址

    我要开发 C 客户端 服务器应用程序 我需要告诉客户端服务器的 IP 地址是什么 它可能来自客户端或服务器广播 任何关于这方面的帮助和解决方案都会非常有用 如果有一些示例代码那就更好了 Thanks 您可以使用BroadCast方法进行广播
  • 将枚举案例的关联值提取到元组中

    我知道如何使用 switch 语句提取枚举案例中的关联值 enum Barcode case upc Int Int Int Int case quCode String var productBarcode Barcode upc 8 1
  • CUDA全局内存事务的成本

    根据 CUDA 5 0 编程指南 如果我同时使用 L1 和 L2 缓存 在 Fermi 或 Kepler 上 则所有全局内存操作都使用 128 字节内存事务完成 但是 如果我仅使用 L2 则使用 32 字节内存事务 第 F 4 2 章 让我
  • 建议在 C#.NET 中加密 XML 文件的最佳算法?

    我必须加密 XML 文件并通过网络发送到私人服务器中 我的另一个应用程序将通过提供实际的公钥来解密文件并将其导入到 SQL 你能建议我最好的方法吗 File XML类型 可能的尺寸 最大 250 MB 技术 C NET 2008 Use X
  • YUI 压缩机和 .NET 应用程序

    我想使用 YUI Compressor 原始版本 并将其用作典型 MS 构建过程 Visual Studio 2008 MSBuild 的一部分 有人对此有任何指导或想法吗 例如 合并到项目中的好方法 如何处理现有的 CSS 和 JS 引用
  • 尝试拟合 CrossValidator 对象时 DataBricks PySpark 出错

    首先 我是 DataBricks 和 PySpark 的新手 所以如果这是我没有看到的简单解决方案 我深表歉意 我的集群位于 DataBricks 运行时 9 1 LTS Spark 3 1 2 Scala 2 12 上 我正在研究一个 N
  • 在 Perl 中如何使用变量作为变量名?

    我需要在 perl 中实现以下目标 printmsg val1 msg1 if val1 printmsg val2 msg2 if val2 printmsg val3 msg3 if val3 printmsg val4 msg4 if
  • return 语句之前/期间的 C 分段错误

    我在 return 语句之前打印要返回的值 并告诉我的代码打印在函数调用之后立即返回的值 但是 在第一个打印语句之后和第二个打印语句之前 我遇到了分段错误 还值得注意的是 这种情况总是发生在第三次调用该函数时 从来没有第一次或第二次 也从来