Ich habe c-Funktion in meinem Projekt, die eine Struktur erstellt und den Zeiger zurückgibt.c Speicherverlust Problem
typedef struct object
{
float var1;
float var2;
}
Object;
Object *createObject(float newVar1, float newVar2)
{
Object *object; //create new structure
object = (Object*)malloc(sizeof(Object)); //malloc size for struct object
if(object != NULL) //is memory is malloc'd
{
object->var1 = newVar1; //set the data for var1
object->var2 = newVar2; //set the data for var2
return object; //return the pointer to the struct
}
return NULL; //if malloc fails, return NULL
}
jetzt wird die Struktur verwendet, und nach einer Weile ich diese Struktur löschen möchten, habe ich diese Funktion:
void deleteMarnix(Object *objectPointer)
{
free(objectPointer); //free the memory the pointer is pointing to
objectPointer = NULL; //stop it from becomming a dangling pointer
}
dieser letzte Codeausschnitt zeigt, wie ich ein Objekt zu machen, verwenden Sie es und versuchen, um es zu löschen, scheint es jedoch, dass es den Speicher nicht vollständig freigibt. Was mache ich falsch?
Object *object = createObject(21.0f, 1.87f);
//do things here with object.
deleteMarnix(object);
Sie müssen zeigen, wie Sie wissen, dass es undicht ist, können Sie nur durch die CRT Vorbelegung sehen werden. – Puppy
Was meinen Sie mit "es scheint, dass es die Erinnerung nicht vollständig freigibt"? –