Hallo,
ich habe ein Problem mit der folgenden Speicherbelegung:
Wenn das infile etwa bis zu 80 kb groß ist funktioniert der Puffer "buf24" (Zeile 15). Ist die Datei größer oder sehr groß, funktioniert "buf24" nicht mehr. Einwandfrei geht alles, wenn ich Zeile 12 (und 16) mit irgendeinem Puffernamen aktiviere. Allerdings verstehe ich nicht, warum. unsigned char bezieht sich ja auf die einzelnen Werte der size24 und nicht auf den Wert an sich...
Dank und Gruß
Thomas
ich habe ein Problem mit der folgenden Speicherbelegung:
Code:
size_t size24, size32;
size_t count;
unsigned int position;
//...
FILE *infile, *outfile;
infile = fopen(in_name, "rb");
outfile = fopen(out_name, "wb");
fseek (infile , 0 , SEEK_END);
size24 = (ftell (infile)); // number of bytes
size32 = size24 * 4/3;
//void *buf = calloc (size24,1); // bei grossen Dateien geht es nur damit... und dem nachherigen free(buf)
position = fseek (infile , 0 , SEEK_SET);
unsigned char *buf24 = new unsigned char[size24]; // Problem: Größe******
//free(buf);
unsigned int *buffer = new unsigned int[size32];
count = fread(buf24, 3, size24, infile); // 3 bytes je Sample -> 24 Bits
Wenn das infile etwa bis zu 80 kb groß ist funktioniert der Puffer "buf24" (Zeile 15). Ist die Datei größer oder sehr groß, funktioniert "buf24" nicht mehr. Einwandfrei geht alles, wenn ich Zeile 12 (und 16) mit irgendeinem Puffernamen aktiviere. Allerdings verstehe ich nicht, warum. unsigned char bezieht sich ja auf die einzelnen Werte der size24 und nicht auf den Wert an sich...
Dank und Gruß
Thomas