У меня странная ошибка при попытке распределить память. У меня есть указатель на структуру, которая является "malloced", и я хочу другую структуру. Поэтому я снова вызываю malloc, и указатель, который возвращает malloc, указывает на пустое пространство - пока все в порядке. Затем я запоминаю выделенную область, и она переопределяет другую переменную, которая все еще используется.
Первая структура в памяти находится в 0x1643c98, а заданный указатель на вторую - 0x1643bf8, но я хочу malloc 200 байт. Код:
data_t *data = get_head_data();
int length = data->head.length;
data_t *new_data = malloc(length);
memset(new_data, 0x00, length); // this line override the perivously malloced data
//some other operation
Я использую Window XP (32 бит) и Cygwin, с GCC 3.4.4. Процессор Intel Core 2 Duo.
Любая идея, что не так или в чем должна быть проблема?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Извините, я был совершенно неверный трек. Есть функция с ошибкой, которая называется неожиданным. Когда я позже вызываю malloc, предыдущий адрес остается в памяти, и я думаю, что он действителен, но он был свободен () - ред.
Спасибо всем за советы!