好的,我有一个结构 TextBlock
,它模拟在屏幕上移动文本 block 。这是标题:
struct TextBlock
{
RECT textArea;
RECT rectArea;
double whatBlock;
double x;
double y;
double angle;
double speed;
double width;
double height;
char *word;
bool stuck;
};
当它像这样时,一切都很好。当我添加另一个我需要的成员时,问题就来了。它的工作方式是我有两个 TextBlock 数组。第一个是给移动的,第二个是给不动的,表示移动的需要去哪里。这些词都是随机的,从一个句子变成一个困惑,所以这个数据成员将被设置(注释掉)到属于移动 block 的静态 block 的索引,所以我知道它什么时候在正确的位置。
int whatBlock;
创建这个之后,我遍历所有创建的对象并设置
tb[i][j].whatBlock = 0;//与正在设置的其他数据成员相同的区域,移动文本
stb[i][j].whatBlock = 0;//静态文本 block
当我尝试运行它时,没有对数据成员做任何其他事情,它出现了一个错误:
The instruction at [address] referenced memory at [different address]. The memory could not be "written".
请注意,如果我不尝试修改它,而只是创建数据成员,它就可以工作。
在即将完成并遇到大量此类问题的这一点上,我对这个程序有点厌倦了 >.> 任何对此的帮助都将不胜感激。
编辑:此问题现已修复。我用解释回复了接受的答案,但它带来了另一个问题,即使它不影响这个程序。
最佳答案
强制重建一切。相对于定义 TextBlock 的头文件,您的目标文件可能已过时
如果这不能解决问题,请在调试器下运行您的程序并查看错误指令是什么。这将允许您修复程序,或者您可以使用 mroe 信息再次询问。
关于c++ - 写入特定数据成员的内存时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557941/