Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: RedEagle am 03. February 2007, 11:19
-
Ich habe eine Sturktur memlist. davon brauche ich 2 Globlame zeiger.
//...
namespace mem
{
memlist *UsedMemory;
memlist *UnusedMemory;
//...
Wenn ich jetzt in der Funktion SetupMM() den Zeigern eine Adresse zuweise, wird geht diese nach beendigung der Funktion wieder verloren, und UsedMemory & UnusedMemory zeigen auf 0x0
//...
bool SetupMM()
{
UsedMemory = (memlist*)MEM_USEDMEMLIST;
UnusedMemory = (memlist*)MEM_UNUSEDMEMLIST;
//...
warum?? wie kann ich meinen Compiler dazu bringen, nicht immer so'n scheiß zu machen??
Verwende gpp 3.2.3
-
Der Code sollte eigentlich so funktionieren, wie du ihn da stehen hast. Es kann eigentlich nur sein, dass du die Pointer später wieder überschreibst. (Oder dass sie überschrieben werden, weil der Code falsch gelinkt ist etc.)
-
Könnte es eventuell sein, dass du mem::UsedMemory & mem::UnusedMemory in einer Header so definierst und das dann in mehreren Sourcedateien inkludierst? Die sollten eigentlich in einer Header als extern deklariert sein und in nur einer Sourcedatei dann definiert werden.
-
Beide Deklarationen finden in der *.cpp - Datei statt, so wie sich das gehört ;)
zum Linken:
OUTPUT_FORMAT("binary")
INPUT( x:\reos\_ckernel\kernelexe.obj
x:\reos\_ckernel\kernelc.obj
x:\reos\_ckernel\mem.obj
)
ENTRY(start)
SECTIONS
{
.text 0x11A00 :
{
code = .; _code = .; __code = .;
*(.text)
*(.rodata)
. = ALIGN(1);
}
.data :
{
__CTOR_LIST__ = .; LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) *(.ctors) LONG(0) __CTOR_END__ = .;
__DTOR_LIST__ = .; LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) *(.dtors) LONG(0) __DTOR_END__ = .;
data = .; _data = .; __data = .;
*(.data)
. = ALIGN(2048);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(2048);
}
___KERNELEND__ = .;
end = .; _end = .; __end = .;
}
ps.: es werden natürlich wesentlich mehr Dateien gelinkt... (in der INPUT liste stehen 33 Dateien)
zum Kompilieren:
gpp -c -Os -nostdlib -fno-builtin -fno-rtti -fno-exceptions -o x:\reos\_ckernel\mem.obj x:\reos\_ckernel\mem.cpp
-
Kann mir keiner helfen??
Bin echt total am Ende mit meinen Kompetenzen...
Es würde mir schon helfen, wenn ihr mir tipps gebt, wo evtl der Fehler leigt..
-
Schick mir wenn es dir nichts ausmacht einfach mal den Code, dann schau ich mir das an.