0 Pointer von malloc in einer dll
-
Hallo zusammen!
Bin neu im Forum also erstmal Hallo an Alle und Hoffe das mir jemand Helfen kann.
Ich habe eine Dll geschrieben und ein Testprogramm damit ich diese debugen kann.
Wenn ich jetzt die Dll debuge und ein malloc machen möchte bekomme ich einen Pointer ins Nirvana; 0x0, aber nur in einer bestimmten Methode! In anderen Methoden, welche den gleichen Aufbau haben bis auf den Namen und die Parameterliste, funktionieren malloc´s einwandfrei.Wenn ich das Testprogramm als exe ohne debuger starte, funktioniert nichtmal mehr das malloc. Ein printf in der nächsten Zeile wird nicht ausgegeben.
Auszug aus der DLL:
SAPRETURN SSF_API SsfINSSigRcpSsfInfo ( // int __declspec(dllexport) ... const PtrSigRcpSsfInformation ptrSigRcpSsfInfo, SigRcpSsfInformationList * sigRcpSsfInfoList ) { myPrint("Method: SsfINSSigRcpSsfInfo"); void *test = malloc(10); // <- fehler myPrintInt((int)test); // usw., usw. // und das noch void myPrintInt(int i){ if(DEBUG){ printf("%d\n", i); } if(DEBUG_TO_FILE){ FILE *file; file = fopen(FILE_PATH,"a+"); fprintf(file,"%d\n",i); fclose(file); } }
Das eigenartige ist, das es in anderen Methoden ohne Probleme Funktioniert ...
Hatte jemand schon mal ein ähnliches Problem gehabt oder vll. eine Idee ?
Bitte um Hilfe!noch ein paar Infos:
OS: xp 32bit (xp ist klar .... da dll)
IDE: Visual Studio 2005 (C++ Projekt)fG.
gaus
-
Sei er gegrüßt !
Was passiert wenn du statt des void Zeigers einen konkreten Datentypen angibst ?
Grüüßßeee
-
Hallo!
proggingmania schrieb:
Was passiert wenn du statt des void Zeigers einen konkreten Datentypen angibst ?
Das selbe in Grün ...
Das war auch das ursprüngliche Problem, ich wollte mit dem void* nur zeigen das selbst das Simpelste nicht geht.
Eigentlich will ich in etwa so-etwas machen:*sigRcpSsfInfoList = (SigRcpSsfInformation)malloc(sizeof(SigRcpSsfInformation));
Leider mit dem selben Ergebnis
fG.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Malloc versagt doch eigentlich nur dann, wenn kein Speicherplatz reserviert werden kann, bzw. nicht genug zur Verfügung steht ?
Vielleicht ist deine RAM-Kapazität am Ende ?
-
Danke für das verschieben in das richtige Forum.
An den System resourcen liegt es bestimmt nicht da ist noch jede menge Platz.
Ich habe auch schon so-etwas probiert:
void *test = malloc(1);
und bei 8 bit sollte doch wirklich nichts schiefgehen ... oder
Aber gibt es vll. eine Möglichkeit die Programm Resourcen zu verwalten oder anders gefragt kann ich die Heap-größe, die mir der Compiler zur verfügung stellt, ändern?
Habe jedenfalls keine Möglichkeit in der IDE gefunden das zu beinflussen.Wenn, dann kann ich mir nur vorstellen das der Compiler zu wenig Speicherplatz zur verfügung stellt ...
Oder es könnte auch durch andere Teile des Programms eine Schranke gesetzt werden !?
Andere Technicken die ich verwende sind zum einen shared memory und jni, kann die Ursache dort liegen?gaus
-
Tjaa, da weiss ich jetzt auch nicht weiter.
Ist das viel zum Kompilieren ?
-
Danke das du dir die Zeit genommen hast!
Viel ... es geht, alles noch im enstehen ...
Gruß
-
Da dämmert mir was... ich hatte ein ähnliches Problem vor (reichlich) einiger Zeit mit einem Projekt. Es lag daran, daß in der DLL eine andere Laufzeitlib eincompiliert wurde, und dann die malloc-Funktion nicht funktioniert.
Man mußte die DLL und das Projekt mit gleichen Compilereinstellungen compilieren, damit es ging. Genau, es war bei irgendeiner XML-Lib, da war die DLL mit der Stdlib vom VC6 zusammencompiliert, und mein Projekt compilierte die Stdlib vom VC2005 rein.
Sorry für die mäßige Beschreibung, aber ich bekomme es nicht mehr genauer zusammen.
Suche dazu mal in der MSDN bzgl "DLL malloc compiler settings", da müßtest Du fündig werden.
-
Mir es gerade aufgefallen das folgendes dann doch wieder funktioniert:
int stuf[] = {1,2,3};
.... aber das ist Leider nutzlos für mein vorhaben, da ich eine verkettete liste aufbauen muss.
Marc++us schrieb:
Suche dazu mal in der MSDN bzgl "DLL malloc compiler settings", da müßtest Du fündig werden.
Habe nach den Schlüsselworten in verschiedenen Konstellationen gesucht aber leider nichts nützliches gefunden.
Die Projektmappe(kein Compilereinstellungen möglich) besteht derzeit aus zwei Projekten, 1 - Dll, 2 - Testprogramm.
Wie meinst du das mit Einstellungen der Dll und des Projekts ?
Oder meintest du vll. wie lib´s im Projekt compiliert werden, dafür habe ich aber keine Einstellungsmöglichkeit gefunden, da lib´s ja nur gelinkt werden.gaus