好的,我有一个结构TextBlock
,模拟在屏幕上移动文本块。这是标题:
struct TextBlock
{
RECT textArea;
RECT rectArea;
double whatBlock;
double x;
double y;
double angle;
double speed;
double width;
double height;
char *word;
bool stuck;
};
当它是这样的时候,一切都很好。当我添加另一个我需要的成员时,问题就来了。它的工作方式是我有两个TextBlocks数组。第一个是移动的,第二个是不移动的,表示移动的需要去的地方。这些单词都是从句子到混乱的随机化,所以这个数据成员将被设置(注释掉)到静态块属于移动块的索引,所以我知道它何时在正确的位置。
int whatBlock;
创建完成后,我将浏览所有创建的对象并设置
tb[i][j].whatBlock = 0; //same area as other data members being set, moving text
stb[i][j].whatBlock = 0; //static text block
当我尝试运行此操作时,如果不对数据成员执行任何其他操作,则会出现错误:
The instruction at [address] referenced memory at [different address]. The memory could not be "written".
请注意,如果我不尝试修改它,只是创建数据成员,它就可以工作。
在这几乎完成并且遇到大量这类问题的时候,我对这个程序感到厌倦了。>。>任何有关这方面的帮助将不胜感激。
编辑:此问题现已修复。我用解释回复了接受的答案,但它带来了另一个问题,即使它不影响这个程序。
答案 0 :(得分:1)
强制重建一切。对于定义TextBlock的头文件,您可能有一个过时的目标文件
如果这不能解决问题,请在调试器下运行程序,看看故障指令是什么。这可以让你修复程序,或者你可以再次询问有关信息的信息。
答案 1 :(得分:0)
如果没有发布更多代码,我只能告诉您程序中可能存在内存损坏错误 - 即您正在读取或写入超出已分配内存的末尾。
如果您发布更多代码,我会相应地编辑此答案。
答案 2 :(得分:0)
我无法提供建议,因为我们无法访问完整的源代码。
无论如何,我可以建议你,它可能不在真正隐藏bug的struct TextBlock
中。例如,对TextBlock成员的每次访问都意味着您正在访问this
隐藏变量。
如果此指针已损坏,您可能会遇到问题,导致您在错误的位置搜索。