Aufrufen der Vulkan -Funktion am Programm Exit Ergebnissen im Segmentierungsfehler [geschlossen]C++

Programme in C++. Entwicklerforum
Anonymous
 Aufrufen der Vulkan -Funktion am Programm Exit Ergebnissen im Segmentierungsfehler [geschlossen]

Post by Anonymous »

In C ++ ist es eine gute Idee, jede Reinigung in den Destruktor eines Objekts zu wickeln, und so sehen meine Vulkan -Objekte so aus wie: < /p>
struct MyVulkanObject
{
VkCommandPool handle;
~MyVulkanObject()
{
if (handle != VK_NULL_HANDLE)
vkDestroyCommandPool(logicalDevice, handle, nullptr);
}
}
< /code>
Ich habe mein Programm auf MSVC unter Windows kompiliert und ausgeführt. Vor kurzem bin ich zu Linux gewechselt und habe mit GCC und Clang zusammengestellt. Ich fange an, Segmentierungsfehler beim Programm zu statischen Objekten zu erhalten, die den Destruktor ausführen, wenn sie Funktionen wie VkDestroyCommandpool aufrufen. Und in meinem eigenen Code beginne ich, die Praxis zu übernehmen, nur absichtlich Objekte zu verlassen, die sich auf möglicherweise außerordentlich zerstörte andere Objekte beziehen. Sie sind keine problematischen Lecks, der Prozess endet und das Betriebssystem wird den gesamten Speicher zurückerhalten. Und ich werde einfach Fehler von Clang -Leck -Desinfektionsmitteln zum Schweigen bringen, die meines Wissens nur auf dem Programmausgang läuft und Ihnen über Lecks erzählt, die sowieso nicht wichtig sein sollten. Vulkan API ist nicht wirklich initialisiert. Sie erstellen die Instanz und das logische Gerät, und diese werden nie von mir zerstört. Ich würde also erwarten, dass Anrufe wie VkDestroyCommandpool immer arbeiten. Ich verwende jedoch Volk Loader, der alle Zeiger der Vulkan -API -Funktion lädt. Ich glaube, dies geschieht durch das Laden einer dynamischen Bibliothek und das Einstellen der Funktionszeiger. Ist es jetzt möglich, dass die Fehler, die ich bekomme, weil die vulkanische dynamische Bibliothek nicht verknüpft wird und ich dann VkDestroyCommandpool nenne? Das würde es erklären. Soll das nicht passieren? Gibt es eine Garantie dafür, dass die dynamischen Bibliotheken erst zum letzten Schritt vereint werden? Oder ist die Tatsache, dass die Bibliothek nicht verknüpft wird, wahrscheinlich der Grund, warum ich den Segmentierungsfehler beim Aufrufen einer Vulkan -Funktion erhalte, wenn ein statisches Objekt zerstört wird?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post