Итак, я новичок в C, и я пытался написать этот инструмент для редактирования тегов id3 в музыкальных файлах из командной строки. Я получаю эту ошибку:
* glibc обнаружил двойное освобождение или повреждение (вверху): 0x0000000000502010 **
Из того, что я читал, я знаю, что это как-то связано с освобождением памяти. Я просто не совсем уверен, куда идти отсюда. Во всяком случае, моя логика заключалась в том, что если бы тег существовал, я бы прочитал этот тег, а затем внес все необходимые изменения в поля, указанные в командной строке. Вот блок, который доставлял мне неприятности. Заранее спасибо за любую информацию!
fopen(argv[1], "rb");
fseek(in_file, -128, SEEK_END);
fread(&tagTest, sizeof(struct iD3Tag), 1, in_file);
fclose(in_file);
for (x = 2; x < argc-1; x++)
{
if (strcmp(argv[x], "-title"))
strncpy(tagTest.title, argv[x+1], 30);
if (strcmp(argv[x], "-artist"))
strncpy(tagTest.artist, argv[x+1], 30);
if (strcmp(argv[x], "-album"))
strncpy(tagTest.album, argv[x+1], 30);
if (strcmp(argv[x], "-year"))
strncpy(tagTest.year, argv[x+1], 4);
if (strcmp(argv[x], "-comment"))
strncpy(tagTest.comment, argv[x+1], 28);
if (strcmp(argv[x], "-track"))
tagTest.track = atoi(argv[x+1]);
}
tagTest.seperator = 0;
fopen(argv[1], "r+b");
fseek(in_file, -128, SEEK_END);
fwrite(&tagTest, sizeof(struct iD3Tag), 1, in_file);
fclose(in_file);
fread(&tagTest, sizeof(struct iD3Tag), 1, in_file);
нельзя. Структуры имеют внутреннее заполнение между элементами структуры из-за ограничений выравнивания памяти, поэтому информация вашего тега будет существенно повреждена... - person   schedule 05.02.2012struct iD3Tag
? - person pmg   schedule 05.02.2012