Kann sich ein Pointer auf eine QList ändern?

Alles rund um die Programmierung mit Qt
Antworten
freakonaleash99
Beiträge: 43
Registriert: 23. Juli 2017 12:35

Kann sich ein Pointer auf eine QList ändern?

Beitrag von freakonaleash99 »

Hallo,
ich verwende in meiner Anwendung einen Pointer auf eine QList:
QList<class> *m_list = new QList<class>
Der Pointer wird in verschiedene Funktionen und Klassen weitergegeben, damit ich immer Zugriff auf die gleiche Liste habe. Zur Laufzeit kommen Elemente zur Liste hinzu und werden gelöscht. Muss ich mir sorgen machen, dass der Pointer irgendwann auf eine andere Adresse zeigt, da der Speicher an der ursprünglichen Adresse nicht mehr ausreicht?

Ich kenne z.B. von Pointer auf arrays, dass diese immer auf der erste Element des arrays zeigen. Ich stelle mir nun 2 Arrays vor, die direkt aufeinander folgen im Speicher. Wenn man die Größe des 1. Arrays ändern würde, dann hätten die letzten Elemente des ersten Arrays und die ersten Elemente des zweiten Arrays gleiche Adressen. Wäre also problematisch.

Könnt ihr mir sagen, ob das bei QList unkritisch ist? Ich stelle mir das dort ähnlich vor. Allerdings habe ich die Hoffnung, dass die QList deutlich schlauer ist und das besser verwaltet. Aber irgendwo müssen zusätzlich Elemente ja gespeichert werden.....

Könnt ihr mir die Frage beantworten und evtl. das Thema noch etwas erläutern? Bzw. auch gerne entsprechende Links zu Erklärungen schicken....

Danke im voraus!
Thimerosal
Beiträge: 2
Registriert: 19. Februar 2021 20:28

Re: Kann sich ein Pointer auf eine QList ändern?

Beitrag von Thimerosal »

freakonaleash99 hat geschrieben: 17. Februar 2021 18:30 Hallo,
ich verwende in meiner Anwendung einen Pointer auf eine QList:
QList<class> *m_list = new QList<class>
Der Pointer wird in verschiedene Funktionen und Klassen weitergegeben, damit ich immer Zugriff auf die gleiche Liste habe. Zur Laufzeit kommen Elemente zur Liste hinzu und werden gelöscht. Muss ich mir sorgen machen, dass der Pointer irgendwann auf eine andere Adresse zeigt, da der Speicher an der ursprünglichen Adresse nicht mehr ausreicht?

Ich kenne z.B. von Pointer auf arrays, dass diese immer auf der erste Element des arrays zeigen. Ich stelle mir nun 2 Arrays vor, die direkt aufeinander folgen im Speicher. Wenn man die Größe des 1. Arrays ändern würde, dann hätten die letzten Elemente des ersten Arrays und die ersten Elemente des zweiten Arrays gleiche Adressen. Wäre also problematisch.

Könnt ihr mir sagen, ob das bei QList unkritisch ist? Ich stelle mir das dort ähnlich vor. Allerdings habe ich die Hoffnung, dass die QList deutlich schlauer ist und das besser verwaltet. Aber irgendwo müssen zusätzlich Elemente ja gespeichert werden.....

Könnt ihr mir die Frage beantworten und evtl. das Thema noch etwas erläutern? Bzw. auch gerne entsprechende Links zu Erklärungen schicken....

Danke im voraus!
Ich ahne zu wissen, was Du meinst, allerdings sehe ich bei Deiner Verwendung eines QList-Zeigers keine Bedenken,
allerdings musst Du sicherstellen, das Du nicht an verschiedenen Stellen gleichzeitig(via Threads) auf das QList-Objekt zugreifst.
freakonaleash99
Beiträge: 43
Registriert: 23. Juli 2017 12:35

Re: Kann sich ein Pointer auf eine QList ändern?

Beitrag von freakonaleash99 »

Danke für dein Antwort.
Es scheint auch zu funktionieren... Ich war mir nur eben nicht sicher, ob das nach längerer Laufzeit (und dadurch größer werdende Liste) entstehen kann.

Hab auch drüber nachgedacht, einfach ein const zu setzen - dann dürfte ja sowieso nichts passieren.

also const QList<class> *m_list = new QList<class>
Antworten