c ++,数组的值在某处意外变化,你能帮我找出在哪里吗?
c++, An array's values are unexpectedly changing somewhere, could you help me find out where?
我是c++的新手,我正在编写一个编写BMP文件的程序。文件每个像素的信息都存储在数组Color *image;
颜色是一个类,它接受RGB的三个int
值,并将它们分配给unsigned char red
、unsigned char green
、unsigned char blue
。
我用以下命令初始化Color *image;
:
Color c(255,255,255);
image = new Color[width*height];
for(int row = 0; row < width; row++){
for(int column = 0; column < height; column++){
image[column*width + row] = c;
out << (int) image[column*width + row].red << " " << (int) image[column*width + row].green << " " << (int) image[column*width + row].blue << "n";
}
}
out
是写入文本文件的ofstream
。它只是确认它正在将正确的值写入数组的该点。
当我在另一种方法中使用此代码时,会出现我的问题:
for(int row = 0; row < width; row++){
for(int column = 0; column < height; column++){
cout << (int) image[column*width + row].red << " " << (int) image[column*width + row].green << " " << (int) image[column*width + row].blue << "n";
out.write((char*) &image[column*width + row].red,1);
out.write((char*) &image[column*width + row].green,1);
out.write((char*) &image[column*width + row].blue,1);
}
}
它试图将image
的每个部分的值写入二进制文件。cout
产生随机值,如"254 238 254"。我关闭了所有流,并且在其他任何地方都不使用image
。
我的价值观在哪里变化?
提前感谢任何帮助!
不知道为什么会出现错误。假设您收到的指针是正确的,为什么不执行以下操作,这是处理二进制文件的标准方法。
out.write(reinterpret_cast<char*>(image), sizeof(Color) * width * height);
相关文章:
- C++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 静态数据成员模板专用化的实例化点在哪里
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在哪里声明结构运算符重载
- C++ 中的自定义异常:在哪里定义它们?
- 常量参数存储在哪里 (C++)?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 此递归函数的每次迭代的值存储在哪里?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 在哪里存储跨平台C++应用存储?
- C++泛型类错误,问题出在哪里?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 将类作为主要参数的语法在哪里需要?
- 模板参数在 C++ 中存储在哪里?
- 我的重复检查代码中的错误究竟在哪里?
- C++17 在并行性方面究竟发生了哪些变化?(权威文档在哪里?
- c ++,数组的值在某处意外变化,你能帮我找出在哪里吗?