Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++][SFML] std::vector -> 0xC0000005

Ostatnio zmodyfikowano 2018-03-20 19:36
Autor Wiadomość
sppmacd
Temat założony przez niniejszego użytkownika
[C++][SFML] std::vector -> 0xC0000005
» 2018-03-12 18:24:03
Witam,
przy próbie uruchomienia poniższego kodu program wysypuje się i zwraca kod błędu: 0xC0000005. Co mam zrobić?

Kod:
C/C++
#include <SFML/Graphics.hpp>
#include <vector>
#include <cstdlib>
#include <iostream>

using namespace std;

vector < sf::CircleShape > objs;

int main()
{
    srand( time( NULL ) );
    sf::RenderWindow wnd( sf::VideoMode( 300, 300, 32 ), "Test" );
    sf::Event event;
   
    while( wnd.isOpen() )
    {
        objs.clear();
       
        for( int i = 0; i < 10; i++ )
        {
            sf::CircleShape circleshape( 2 );
            circleshape.setPosition( rand() % 300, rand() % 300 );
            circleshape.setFillColor( sf::Color( rand() % 255, rand() % 255, rand() % 255 ) );
            objs.push_back( circleshape );
        }
       
        while( wnd.pollEvent( event ) )
        {
            if( event.type == sf::Event::Closed )
            {
                wnd.close();
            }
        }
       
        for( vector < sf::CircleShape >::iterator i = objs.begin(); i < objs.end(); i++ )
        {
            wnd.draw( * i ); //tutaj się zatrzymuje program
        }
       
        wnd.display();
    }
   
    return 0;
}

Debugger nie mówi nic konkretnego. Z góry dziękuję za pomoc!
P-169962
pekfos
» 2018-03-12 18:41:36
Kod wygląda poprawnie. Próbowałeś robić rebuild?
P-169963
sppmacd
Temat założony przez niniejszego użytkownika
Rebuild
» 2018-03-12 18:54:18
[cycat]Próbowałeś robić rebuild?[/cytat]

Próbowałem, i to nic nie dało. Podam jeszcze call stack debuggera:

#0 0x2b ?? () (??:??)
#1 0x3fffffff ?? () (??:??)
#2 0x40000000 ?? () (??:??)
#3 0xff59e7e5 ?? () (??:??)
#4 ?? ?? () (??:??)
P-169964
pekfos
» 2018-03-12 19:07:59
To samo się dzieje przy takim rysowaniu?
C/C++
sf::CircleShape circleshape( 2 );
circleshape.setPosition( rand() % 300, rand() % 300 );
circleshape.setFillColor( sf::Color( rand() % 255, rand() % 255, rand() % 255 ) );
wnd.draw( circleshape ); // bez wektora
P-169965
sppmacd
Temat założony przez niniejszego użytkownika
Bez wektora tak samo
» 2018-03-12 19:17:15
Jak wrzuciłem w tę pętlę to tak samo
C/C++
for( int i = 0; i < 10; i++ )
{
    sf::CircleShape circleshape( 2 );
    circleshape.setPosition( rand() % 300, rand() % 300 );
    circleshape.setFillColor( sf::Color( rand() % 255, rand() % 255, rand() % 255 ) );
    wnd.draw( circleshape ); // bez wektora
}

Przy każdym użyciu
draw()
.
EDIT 1: Używam SFML 2.4.2
P-169966
pekfos
» 2018-03-12 19:25:23
Jak rozumiem nawet coś takiego nie działa?
C/C++
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow wnd( sf::VideoMode( 300, 300, 32 ), "Test" );
    wnd.draw( sf::CircleShape( 2 ) );
}
W takim razie skąd masz build SFMLa i jakiego używasz kompilatora?
P-169967
sppmacd
Temat założony przez niniejszego użytkownika
» 2018-03-12 19:40:59
Tak, coś takiego też nie działa (To dziwne, wcześniej działało, to jest pierwszy projekt w którym ta metoda nie działa)

SFML'a mam z oryginalnej strony (https://www.sfml-dev.org/), a kompilator... GCC 4.9.2, dokładnie "x86_64 4.9.2 sjlj-rt v4-rev4"
P-169968
pekfos
» 2018-03-12 19:51:57
Ja bym spróbował z nowszym kompilatorem, np 6.1.0 podanym w https://www.sfml-dev.org​/download/sfml/2.4.2/ żeby oszczędzić sobie kompilacji SFMLa.
P-169969
« 1 » 2
  Strona 1 z 2 Następna strona