netbeans C++;调试 嗨,伙计们,我想用NeBeCs在C++中调试这个应用程序(运行它使我在关闭之后运行失败),它给我一个信号错误,在这个点

netbeans C++;调试 嗨,伙计们,我想用NeBeCs在C++中调试这个应用程序(运行它使我在关闭之后运行失败),它给我一个信号错误,在这个点,c++,binary,sdl,C++,Binary,Sdl,*c=(char)任何数字 其中,任何数字都是1-7之间的整数 它告诉我信号捕捉到了西格夫?信号错误 是什么 代码将一些内容写入二进制文件,如下所示 void clean_up(Dot &myDot, Uint32 &bg) { SDL_FreeSurface(DotS); ofstream f(SAVE_FILE_PATH, ios::binary | ios::out); f.clear(); // char *buffer; //

*c=(char)任何数字

其中,任何数字都是1-7之间的整数

它告诉我信号捕捉到了西格夫?信号错误

是什么

代码将一些内容写入二进制文件,如下所示

void clean_up(Dot &myDot, Uint32 &bg) {
    SDL_FreeSurface(DotS);

    ofstream f(SAVE_FILE_PATH, ios::binary | ios::out);

    f.clear();

//    char *buffer;

//    buffer[0] = *(char*)(&myDot.get_location().x + 0);
//    buffer[1] = *(char*)(&myDot.get_location().x + 1);
//    buffer[2] = *(char*)(&myDot.get_location().x + 2);
//    buffer[3] = *(char*)(&myDot.get_location().x + 3);
//    buffer[4] = *(char*)(&myDot.get_location().y + 0);
//    buffer[5] = *(char*)(&myDot.get_location().y + 1);
//    buffer[6] = *(char*)(&myDot.get_location().y + 2);
//    buffer[7] = *(char*)(&myDot.get_location().y + 3);

    f.write((char*)&myDot.get_location().x, sizeof(myDot.get_location().x));

    f.write((char*)&myDot.get_location().y, sizeof(myDot.get_location().y));

    char *c;

    if (bg == C0)
        *c = (char)1;
    else if (bg == C1)
        *c = (char)2;
    else if (bg == C2)
        *c = (char)3;
    else if (bg == C3)
        *c = (char)4;
    else if (bg == C4)
        *c = (char)5;
    else if (bg == C5)
        *c = (char)6;
    else if (bg == C6)
        *c = (char)7;

    f.write(c, 1);

    f.close();

    SDL_Quit();
}

有人能告诉我为什么注释部分也给了我一个信号吗

你没有给c分配内存。它是指向某个随机位置的指针(或NULL,取决于内存的初始化方式)。然后你试着给它写信

它真的需要是指针吗?你能用
charc,然后是
c=(char)1等等。然后您希望将fwrite调用更改为
f.write(&c,1)(或使用fputc)


编辑:代码中被注释掉的部分似乎存在相同的基本问题。您尚未为缓冲区分配任何内存。如果这个示例是其中的大部分,那么您只有8个项目,然后将其声明为
char buffer[8]
,而不是指针。

您没有为c分配内存。它是指向某个随机位置的指针(或NULL,取决于内存的初始化方式)。然后你试着给它写信

它真的需要是指针吗?你能用
charc,然后是
c=(char)1等等。然后您希望将fwrite调用更改为
f.write(&c,1)(或使用fputc)


编辑:代码中被注释掉的部分似乎存在相同的基本问题。您尚未为缓冲区分配任何内存。如果这个例子最多,那么您只有8个项目,然后将其声明为
char buffer[8]
而不是指针。

非常感谢!你猜怎么着,整个计划都很有效,而且效果很好。再次感谢汉克斯,谢谢你!你猜怎么着,整个计划都很有效,而且效果很好。再次感谢