ich derzeit zugewiesenen Speicher zu versuchen, aber durch so tut es das Programm zum Absturz verursacht. Ich bin neu in C und Programmierung im Allgemeinen, und wäre großartig, um Hilfe mit dem Problem und allen weiteren Problemen zu erhalten, die aus meiner Unerfahrenheit stammen können.Free() Funktion verursacht Programm zum Absturz bringt
Pool* allocatePool(int x);
void freePool(Pool* pool);
void store(Pool* pool, int offset, int size, void *object);
typedef struct _POOL
{
int size;
void* memory;
} Pool;
int main()
{
printf("enter the number of bytes you want to allocate//>\n");
int x;
Pool* p;
scanf("%d", &x);
p=allocatePool(x);
freePool(p);
return 0;
}
/* Allocate a memory pool of size n bytes from system memory (i.e., via malloc()) and return a pointer to the filled data Pool structure */
Pool* allocatePool(int x)
{
static Pool p;
p.size = x;
p.memory = malloc(x);
printf("%p\n", &p);
return &p;//return the address of the Pool
}
/* Free a memory pool allocated through allocatePool(int) */
void freePool(Pool* pool)
{
free(pool);
printf("%p\n", &pool);
}
Sie müssen 'fREe' den gleichen Speicher, die Sie zugeordnet haben. You 'malloc' zu' p.memory', aber Sie 'frei (& p)', die keinen Speicher o den Haufen überhaupt, aber die Adresse eines statischen Objekts alocated ist. –
Es ist nie 'free()' Funktion, die das Programm zum Absturz bringt. Es ist ein Fehler in Ihrem Code, der das Programm zum Absturz bringt. – SergeyA
@SergeyA _Never_ ist ein bisschen stark. Es ist ein bisschen so, als würde man sagen, dass man nie vom Blitz getroffen wird. Sicher, es ist nicht sehr wahrscheinlich, aber es ist nicht so, als gäbe es keine Buggy-Implementierungen von malloc/free _somewhere_. – Cubic