netbeans C++;调试 嗨,伙计们,我想用NeBeCs在C++中调试这个应用程序(运行它使我在关闭之后运行失败),它给我一个信号错误,在这个点
*c=(char)任何数字 其中,任何数字都是1-7之间的整数 它告诉我信号捕捉到了西格夫?信号错误 是什么 代码将一些内容写入二进制文件,如下所示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; //
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]
而不是指针。非常感谢!你猜怎么着,整个计划都很有效,而且效果很好。再次感谢汉克斯,谢谢你!你猜怎么着,整个计划都很有效,而且效果很好。再次感谢