Meine Frage steht eiegntlich schon im Titel:
Wo liegt der Wertebereich von Zeigeren von LinkedListElementen oder Memorys welche Erstellt werden?
Diese Zeiger geben ja trivial gesagt den "Speicherort im RAM" zurück.
Nun benutze ich in PureBasic oft eine Array-LinkedList kombination, ähnlich wie es auch in PB bei Windows, Gadgets usw. gemacht wird.
Ich kann also Elemente durch eine Nummer initiallisieren, oder mit #PB_Any.
Hier ein Beispiel:
Code: Alles auswählen
Structure Element
x.i
y.i
EndStructure
Global Dim *Element.Element(10000)
Global NewList Element.Element()
Procedure CreateElement(Element.i, x.i, y.i)
Protected *Element.Element
*Element = AddElement(Element())
Debug "Speicherort: "+Str(*Element)
If Element >= 0 And Element <= 10000
*Element(Element) = *Element
EndIf
*Element\x = x
*Element\y = y
ProcedureReturn *Element
EndProcedure
Procedure DebugElement(Element.i)
If Element >= 0 And Element <= 10000
Debug Str(*Element(Element)\x)+","+Str(*Element(Element)\y)
Else
ChangeCurrentElement(Element(), Element)
Debug Str(Element()\x)+","+Str(Element()\y)
EndIf
EndProcedure
CreateElement(1, 1, 1)
CreateElement(2, 1, 2)
Etwas1 = CreateElement(#PB_Any, 2, 1)
CreateElement(3333, 1, 3)
Etwas2 = CreateElement(#PB_Any, 2, 2)
DebugElement(1)
DebugElement(2)
DebugElement(3333)
DebugElement(Etwas1)
DebugElement(Etwas2)
Wir also eine zahl kleiner 10'000 irgendwo übergeben ist mit einer echten NUMMER zu rechnen (also Arrayfeld welches den Pointer zum Element hat); ist die zahl größer wird es ein POINTER sein direkt zum Element.
Problem wäre nun aber wenn der SpeicherOrt eines LinkedListElements unter 10'000 liegen würde...
Daher die Frage würde sowas überhaupt möglichsein ?