Du kannst nicht einfach irgendeine beliebige Zahl als Speicheradresse eintragen.
Du weißt ja gar nicht ob dieser Speicherbereich überhaupt frei ist und das Betriebssystem weiß auch gar nicht das du diesen Platz benutzt.
Du musst schon einen Speicherbereich korrekt allokieren - anders geht es nicht.
Würde z.B. so aussehen:
#Include <Memory.au3>
[/autoit][autoit][/autoit][autoit]$Pointer = _MemGlobalAlloc(256 + 4)
[/autoit][autoit][/autoit][autoit]$str = DllStructCreate("int;char[256]",$Pointer)
DllStructSetData($str,1,100)
DllStructSetData($str,2,"hallo")
MsgBox(0,"",DllStructGetData($str,1)&@CRLF&DllStructGetData($str,2))
Ist aber sinnlos das DLLStructCreate sowieso einen Speicherbereich automatisch allokiert - das wär zumindestens mal der manuelle Weg welcher aber auch zusätzliche Fehlerquellen wie z.b. die falsche Größenangabe oder mit sich bringt.
Kurzum: Lass alles wie gehabt - ist der beste Weg.