Ich wollte mir mal SFML angucken und bin schon auf das erste Problem gestoßen als ich ein Titel angeben wollte da SFML nur 1 Byte Zeichen animmt....
Das Probelm konnte ich mit der sf::String Klsse lösen allerdings funktioniert das ganze beim verlassen des Gültigkeitsbereichs nichtmehr. Sobald Str zerstört wird bekomme ich eine Zugriffsverletzung.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow )
{
sf::String sfStr("My Application");
std::string Str = sfStr.toAnsiString();
sf::RenderWindow window(sf::VideoMode(600,400), "");
window.setTitle(Str);
sf::Text text("First Time Test Text");
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(text);
window.display();
}
window.setTitle("");
return 0;
}
|
Das Probelm muss an der .ToAnsiString Funktion liegen da der Fehler im Destruktor des std::string auftritt. Wenn ich das window.SetTitle() nicht ans Ende setzte bekomme ich einen Fehler in der mlock.c nach "EnterCriticalSection( _locktable[locknum].lock );" in "void __cdecl _lock (int locknum)". Mit der SetTitle Zeile kommt die Zugriffsverletzung in der free.c bei "retval = HeapFree(_crtheap, 0, pBlock);" in "void __cdecl _free_base (void * pBlock)". Liegt es vielleicht daran das Str mit sfStr verknüpft wird und Str nicht gelöscht werden kann weil die Ressourcen zu sf Str gehören?
|
C-/C++-Quelltext
|
1
2
3
|
std::string Str;
sf::String sfStr("My Application");
Str = sfStr.toAnsiString();
|
Gibt komischerweise eine Exeption in xlock.cpp bei der Zuweisung von Str. Dabei sollte es doch keine Probleme bei einer Zuweisung von std::string zu std::string geben...