开发者

Error Writing to Memory of Particular Data Member

Okay, I have a struct, TextBlock, that simulates moving blocks of text around the screen. Here's the header:

str开发者_JAVA百科uct TextBlock
{
    RECT textArea;
    RECT rectArea;
    double whatBlock;
    double x;
    double y;
    double angle;
    double speed;
    double width;
    double height;
    char *word;
    bool stuck;
};

When it's like this, everything works perfectly fine. The problem comes when I add another member that I need. The way it works is that I have two arrays of TextBlocks. The first is for moving ones, the second is for ones that don't move, signifying where the moving ones need to go. The words are all randomized from a sentence to a jumble, so this data member will be set (commented out) to the index of which static block belongs to the moving one so I know when it's in the right place.

int whatBlock;

After creating this, I go through all of the created objects and set

tb[i][j].whatBlock = 0; //same area as other data members being set, moving text stb[i][j].whatBlock = 0; //static text block

When I try to run this, without doing anything else to the data member, it comes up with an error:

The instruction at [address] referenced memory at [different address]. The memory could not be "written".

Note that if I don't try to modify it, and just create the data member, it works.

At this point of almost being done and having tons of these kinds of problems, I'm getting a bit fed up with this program >.> Any help at all on this would be greatly appreciated.

EDIT: This issue is now fixed. I replied to the accepted answer with the explanation, but it poses another problem, even if it doesn't affect this program.


  • Force a rebuild of everything. You may have an object file that is out-of-date with respect to the header file that defines TextBlock

  • If that doesn't fix it, run your program under a debugger and see what the faulting instruction is. Either that will allow you to fix the program, or you can ask again with mroe informatin.


Without you posting more code, I can only tell that you likely have a memory corruption bug in your program - i.e. you are reading or writing beyond the end of allocated memory.

If you post more code, I'll edit this answer accordingly.


I can't really give advices since we cannot access the complete source code.

Anyway, I can suggest you that it may be not in the struct TextBlock where really hides the bug. For instance, every access to TextBlock's member means that you are accessing to this hidden variable.

If this pointer is corrupted, you may experience problem where you don't expect it, leading you to search in the wrong places.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜