程序使program.exe在启动后大约停止工作4秒

时间:2013-09-27 11:40:10

标签: c++ c++11 process

我是编码的新手,我正在尝试创建一个复古风格的游戏。 这个想法是让游戏中的每个方块成为字符串的一部分。这是我到目前为止的代码:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main(){
   int a,b=0;
   char s[9][77]={};

   while (true) {
     s[a][b]={'_'};
     b+=1;
     if (b>77){
        a+=1;
        b=0;
     }
     if (a>9){
        a=0;
        b=0;
        break;
     }
   }
   s[0][0]={'H'};

   cout << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
   cout << "@" <<s[0][0]<<s[0][1];

   return 0;
}

当我在大约4秒后运行它时它给了我:

  

program.exe已停止工作。

如果有错误的话我会得到以下信息:

  

msg已关闭(在cmd中):进程返回-1073741819(0xc0000005)

编译时我得到以下内容;

  

警告:扩展初始化程序列表仅适用于-std = c ++ 11或-std = gnu ++ 11 [默认启用]

ps:编码片段仅用于测试我没有收到错误。

3 个答案:

答案 0 :(得分:2)

一些问题:

 int a, b=0; // a is not initialized

while while循环将访问

while (true) {
 s[a][b] = {'_'};  // b will be 78, access s[a][78] out of bounds
 b+=1;
 if (b>77){
 //...

答案 1 :(得分:1)

问题可能在这里:

int a,b=0;

在这里,您声明了两个变量,但只初始化一个。这意味着a的值未定义,并在例如s[a][b]是未定义的行为。

答案 2 :(得分:1)

if (b>77){

77已经是非法指数;测试需要使用>=。与a下面的那个相同。

还有Joachim发现的问题。