Speicher verwaltung + Dll problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

tft

Betreff: Speicher verwaltung + Dll problem

BeitragFr, Jan 02, 2004 7:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.......

Habe auch wider mal ne Frage...........

In welchem Modus wird der Speicher bei den Bank Befehlen erzeugt? Die frage ist in sofern interesant. Da Dll`s scheinbar unter XP auf keine Adresse die in den .dcl liste als (*, Zeiger) declariert ist. Schreibend zugreifen können. Zumindestens nicht wirksam. Weis einer den Code mit dem ich Shared Mem Allocieren kann. Die Api wird da weiterhelfen. Aber ehe ich mir die Suche antuhe. Vertraue ich darauf. Das hir einer was weis.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

TheShadow

Moderator

BeitragFr, Jan 02, 2004 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
brauchst kein API - nimm malloc()

in decls:
alpha32%(buffer1*,width1,height1,pitch1,buffer2*,width2,height2,pitch2,buffer3*,px,py,mode,alpha):"alpha32@52"



in c++

#define BBDECL extern "C" __declspec(dllexport)
#define BBCALL __stdcall

BBDECL int BBCALL alpha32(int buffer1[], int width1, int height1, int pitch1, int buffer2[], int width2, int height2, int pitch2, int buffer3[], int px, int py, int mode, int alpha1)
{
}


wenn du "const int buffer1[]" machst, dann kannst du nur lesen

wenn du mit bb eine bank übergibst, dann muss die existieren!!!
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

tft

BeitragFr, Jan 02, 2004 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.....

wie das in der .decl sein muss ist schon klar. Aber In BB gibt es kein Malloc(). Oder habe ich da was Falsch ferstanden?
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

TheShadow

Moderator

BeitragFr, Jan 02, 2004 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
da machst du dann einfach eine bank

bank=createbank(1000)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Vertex

BeitragFr, Jan 02, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Nee Du kannst den Speicher via WinAPI allokieren. Das geht via GlobalAlloc-Funktion und um den wieder freigeben zu können geht das
glaube mit GlobalReAlloc.
http://purebasic.de/files/win32.zip
Saugt Dir mal die Hilfe
mfg olli

tft

BeitragSa, Jan 03, 2004 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi....

@TheShadow

weil der Bank Befehl kein Shared Ram einrichtet. Wenn jetzt eine DLL auf eine übergebene Adresse einen wert einschreibt. passiert unter XP garnichts. Da für jede gestartete Aplication ein eigener Adressraum generiert wirt. Das ist auch der grund warum XP eigentlich nicht mehr Abstürtzt. Eine beschreiben der Adresse null zum beispiel kann dann nicht mer den Schaden anrichten wie früher.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

TheShadow

Moderator

BeitragSa, Jan 03, 2004 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
erklär mir dann warum meine transparenzroutine auch unter xp funktioniert - ich übergebe memory-addressen und es klappt... ich lese in meinem Beispiel auf bank und schreibe in vram (kann auch in bank schreiben)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group