如何使用内存模型图计算代码的 o/p?为什么这会导致分段错误?

巴维亚巴蒂亚
int main()
{
    char a[2][3][3] = {'g','a','t','e','s','q','u','i','z','a','w'};
    printf("%s ", ***a);
    return 0;
}

此代码在 ***a 上给出段错误。请用内存图解释这个数组是如何存储在内存中的。如果我错了 2 个 3 行 3 高的数组,请纠正我。还要判断空格是存储“/0”还是垃圾值。

0______

因为printf("%s ", ***a);将 char'g'转换为一个由于显而易见的原因无效的指针 - 因为 char 转换为指针是 UB

查看此函数的不同之处(也请注意末尾的零)

int zz()
{
    char a[2][3][3] = { 'g','a','t','e','s','q','u','i','z','a','w',0 };
    printf("%s ", &***a);
    return 0;
}

或者

int yyy()
{
    char a[2][3][3] = { 'g','a','t','e','s','q','u','i','z','a','w',0 };
    char *ptr = **a;
    while (*ptr) printf("%c", *ptr++);
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么这会导致细分错误,而不会导致细分错误?

为什么这会导致运行时错误?(使用HashMap查找字符串的字数)

为什么运行此代码时出现分段错误?

为什么此代码导致StackOverflow错误:

为什么Fortran代码会出现分段错误?

为什么取消引用内存别名区域的C程序会导致分段错误?

为什么我的代码出现分段错误?

为什么我的以下代码出现分段错误?

为什么3行gfortran代码会引发分段错误?

我正在访问哪个错误的内存,这会导致分段错误?

为什么继承会导致共享内存分段错误?

为什么释放内存会导致分段错误?

为什么此代码中存在分段错误?

Delphi:为什么这会导致内存泄漏?

为什么此代码会导致分段错误

为什么以下代码会产生分段错误?

Codility代码导致分段错误

如何调试为什么我的C代码会导致分段错误?

为什么使用atoi命令行参数会导致分段错误

为什么代码显示分段错误?

为什么这段代码会出现分段错误?

为什么此代码返回分段错误错误?

为什么下面的代码会产生分段错误

为什么使用 paho.mqtt.c 发送此消息会导致分段错误?

为什么我的 psubd xmm 内存出现分段错误?

为什么使用 malloc 创建的指针赋值会导致分段错误

什么原因导致双向链表代码中的分段错误

为什么这段代码会返回分段错误错误?

为什么我在以下代码中出现分段错误?