【问题标题】:Strange Core Dump problem奇怪的核心转储问题
【发布时间】:2010-10-13 22:39:36
【问题描述】:

我的这段代码正在转储核心:

int main(int argc,char *argv[])
{
   char *p = "onnm";
   printf("%c\n",++*(p++));
   return 0;
}

printf 行中的原因可能是什么?

【问题讨论】:

  • 您的调试器应该在您加载它时报告导致核心转储的原因——即,它是访问冲突、分段错误、未对齐读取等。

标签: c


【解决方案1】:

字符串字面量是只读的,不能更改。

使用例如char p[] = "onnm";

【讨论】:

    【解决方案2】:

    由于 C 的“语言标准不一致”,您可以这样编写代码。 例如,

    const char const_buff[] = { 'o','n', 'n', 'm', '\0' }; // OK
    
    char* pArray = const_buff;            // not OK
    

    在同一行它应该不允许你编译,

    char *p = "onnm";
    

    但是你可以编译,所以允许你犯改变只读字符串的错误。

    ++ * ( p++)
    

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2015-06-27
      相关资源
      最近更新 更多