【发布时间】:2015-09-07 00:45:03
【问题描述】:
我想制作一个程序,生成一个介于 1-10 之间的随机数,让玩家猜测下一个数字是更高还是更低。
我决定用 C++ 和 SDL SFML 编写代码。我有这个异常导致我的游戏崩溃:
First-chance exception at 0x0FBD8B51 (msvcr120d.dll) in Higher Or Lower.exe: 0xC0000005: Access violation reading location 0x74742E6C.
导致它的代码是:
if (!font.loadFromFile("arial.ttf"))
cout << "Error: Can not load the font 'arial.ttf' from file!" << endl;
它在Release 中运行良好,但在Debug 中出现此运行时错误
【问题讨论】:
-
您的文件
arial.ttf与您执行程序的位置相同,如果不是,您可以尝试提供整个路径。Access violation reading location 0x74742E6C.表示您尝试读取的位置不存在 -
@VinayShukla 它应该在哪里,我试过使用
if(!font.loadFromFile("Higher Or Lower\Arial")),但它不起作用imgur.com/yEVSb5g -
访问冲突
0x74742E6C的地址恰好是'l.tt'的十六进制表示,即从您的字体名称偏移4-7 处的字符。这几乎可以肯定是由于调试和发布编译文件之间的不匹配。它在release中有效但在debug中无效的事实表明您正在使用release库和您的debug构建。