【问题标题】:Access violation reading location 0xFFFFFFFFFFFFFFD8 in C [closed]C中的访问冲突读取位置0xFFFFFFFFFFFFFFD8 [关闭]
【发布时间】:2022-06-17 00:03:02
【问题描述】:

我的代码有问题,当我尝试编译它时(visual studio 2022)它在ret = atof(S); 抛出这个异常我已经搜索了它,但只找到了 cpp 解决方案。有人可以帮忙吗?

int init_FLOAT(
    char* S
) {
    float ret;
    ret = atof(S);
    if (ret == (float)ret)
        return 1;
    else
        return 0;
}

int main(void) {
    char x = "5";
    printf("%d", init_FLOAT(x));

}

该函数应该判断字符串是否为小数

【问题讨论】:

  • 这需要minimal reproducible example。贴出的代码本身没有问题(会导致访问冲突的)。
  • ret == (float)ret - 毫无意义。 ret 已经是 float,所以它永远是真的。
  • 猜测S 不是指向字符串的有效指针。
  • @EugeneSh。它检查浮点数是否为小数,它不是浮点数,除非无论数据类型如何,它都是小数。

标签: c exception visual-studio-2022


【解决方案1】:

问题是您在S 中向函数传递了一个无效指针。这在atof() 中被取消引用,这会产生未定义的行为。但是,由于您的问题中没有包含调用代码,因此无法更正代码。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多