alchimist
15-03-2002, 19:23
Hi Leute,
ich habe ien kleines Problem ich bekomme einen Speicherzugriffsfehler wenn ich den befehl free() ausführe, woran kann es denn liegen?
Ich habe eine Struktur, worin ich einen char *Poinetr habe. Für diesen reserviere ich Speicherplatz mit malloc (....)
Wenn ich diesen Speicherplatzt dann freigebe erhalte ich den Fehler
Auserdem wäre es nett, wennmir jmd einen guten Debugger empfehlen könnte, und ein gutes manual dazu.
Mein Quelltext ist folgender.
void malloc_ptr (char *ptr, int size) {
// Allocate memory for *bmp_pixel_values
if( (ptr = (char *) malloc( size * sizeof(char) ) ) == NULL)
printf("No memory was allocated for the pointer!\n\n");
else
printf("%d bytes memory were allocated for the pointer!\n\n", size * sizeof(char) );
return;
}
int main (void) {
struct BITMAP picture, *temp;
temp = &picture;
system("clear");
init_struct (temp);
// ausgabe (temp);
open_files (temp);
check_file_opening (temp);
malloc_ptr (temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
fill_ptr (temp->read_file, temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
write_ptr_to_file (temp->write_file, temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
show_ptr(temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
free(temp->BMP_COMPLETE);
fclose(picture.read_file);
fclose(picture.write_file);
return 0;
}
:confused: :confused:
ich habe ien kleines Problem ich bekomme einen Speicherzugriffsfehler wenn ich den befehl free() ausführe, woran kann es denn liegen?
Ich habe eine Struktur, worin ich einen char *Poinetr habe. Für diesen reserviere ich Speicherplatz mit malloc (....)
Wenn ich diesen Speicherplatzt dann freigebe erhalte ich den Fehler
Auserdem wäre es nett, wennmir jmd einen guten Debugger empfehlen könnte, und ein gutes manual dazu.
Mein Quelltext ist folgender.
void malloc_ptr (char *ptr, int size) {
// Allocate memory for *bmp_pixel_values
if( (ptr = (char *) malloc( size * sizeof(char) ) ) == NULL)
printf("No memory was allocated for the pointer!\n\n");
else
printf("%d bytes memory were allocated for the pointer!\n\n", size * sizeof(char) );
return;
}
int main (void) {
struct BITMAP picture, *temp;
temp = &picture;
system("clear");
init_struct (temp);
// ausgabe (temp);
open_files (temp);
check_file_opening (temp);
malloc_ptr (temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
fill_ptr (temp->read_file, temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
write_ptr_to_file (temp->write_file, temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
show_ptr(temp->BMP_COMPLETE, temp->BMP_HEADER_SIZE);
free(temp->BMP_COMPLETE);
fclose(picture.read_file);
fclose(picture.write_file);
return 0;
}
:confused: :confused: