SFML C++ Текст недействителен бесплатно / удалить

В настоящее время я использую SFML 2.4.2-1 на Arch Linux, и у меня есть некоторые проблемы с текстом.

Я собираю с g++ (Я тоже пробовал с clang++).

Я выделил свой пример и получил тот код, который вылетает каждый раз:

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <memory>

int main()
{
  sf::RenderWindow win(sf::VideoMode(1280, 720), "Arcade sfml");
  sf::Font font;

  if (!font.loadFromFile("arial.ttf"))
    {
      throw std::exception();
    }

  sf::Text text("oui", font);

  win.draw(text);
  win.display();
  sleep(10000);
  win.close();
}

Сбой текстового деструктора с неверным освобождением / удалением.

Вот вывод valgrind:

==6297== Warning: noted but unhandled ioctl 0x6458 with no size/direction hints.
==6297==    This could cause spurious value errors to appear.
==6297==    See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==6297== Invalid free() / delete / delete[] / realloc()
==6297==    at 0x4C2C20A: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6297==    by 0x401D75: __gnu_cxx::new_allocator<sf::Vertex>::deallocate(sf::Vertex*, unsigned long) (new_allocator.h:110)
==6297==    by 0x401D43: std::allocator_traits<std::allocator<sf::Vertex> >::deallocate(std::allocator<sf::Vertex>&, sf::Vertex*, unsigned long) (alloc_traits.h:442)
==6297==    by 0x401CE3: std::_Vector_base<sf::Vertex, std::allocator<sf::Vertex> >::_M_deallocate(sf::Vertex*, unsigned long) (stl_vector.h:178)
==6297==    by 0x401C4D: std::_Vector_base<sf::Vertex, std::allocator<sf::Vertex> >::~_Vector_base() (stl_vector.h:160)
==6297==    by 0x401BDC: std::vector<sf::Vertex, std::allocator<sf::Vertex> >::~vector() (stl_vector.h:427)
==6297==    by 0x401ABF: sf::VertexArray::~VertexArray() (VertexArray.hpp:45)
==6297==    by 0x401B32: sf::Text::~Text() (Text.hpp:48)
==6297==    by 0x4016CB: main (main.cpp:15)
==6297==  Address 0x6031b0 is 16 bytes inside data symbol "_ZTVN2sf11VertexArrayE"

Я не могу понять, почему он продолжает сбой с той же ошибкой. Также, когда я выполняю с помощью valgrind, сама программа работает должным образом, то есть я имею в виду, что текст печатается по назначению, но эта ошибка сохраняется и приводит к аварийному завершению программы при ее выполнении в одиночку.

Редактировать:

версия g++: g++ (GCC) 6.3.1 20170109

версия clang++: clang version 3.9.1 (tags/RELEASE_391/final)

Для моего проекта я собираю разделяемую библиотеку, но для этого примера это был простой исполняемый файл:

Общая библиотека:

-fPIC -std=c++14 -W -Wall -Wextra -shared -lsfml-graphics -lsfml-window -lsfml-system -lsfml-audio

Простой исполняемый файл:

-std=c++14 -W -Wall -Wextra -lsfml-graphics -lsfml-window -lsfml-system

0 ответов

Другие вопросы по тегам