Форум программистов, компьютерный форум CyberForum.ru

Выделение памяти malloc приводит к неправильным расчетам - C++

Восстановить пароль Регистрация
 
zasadadada
2 / 2 / 0
Регистрация: 03.05.2013
Сообщений: 338
01.07.2014, 21:47     Выделение памяти malloc приводит к неправильным расчетам #1
Есть функция которая постоянно вызывается для расчетов.
Она работает правильно, до тех пор пока я в неё не добовляю очередную строчку выделения памяти malloc,
после чего все результаты расчетов вообще другие.
C++
1
2
3
4
5
void test () {
    double* buff = (double*)::malloc( w_size *sizeof(double) * size_1);
    double* buff2 = (double*)::malloc( w_size *sizeof(double) * size_1);  добавил перестало считать верно
 
};
в чем может быть причина? Очистки памяти я не делаю, функция открывается - закрывается много много раз.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,642
01.07.2014, 21:52     Выделение памяти malloc приводит к неправильным расчетам #2
Память освобождаешь в конце функции?
zasadadada
2 / 2 / 0
Регистрация: 03.05.2013
Сообщений: 338
01.07.2014, 21:53  [ТС]     Выделение памяти malloc приводит к неправильным расчетам #3
щас только что добавил в конце функции
C++
1
2
free(buff);
free(buff2);
результат тот же...
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,642
01.07.2014, 21:56     Выделение памяти malloc приводит к неправильным расчетам #4
А второй free() где?
zasadadada
2 / 2 / 0
Регистрация: 03.05.2013
Сообщений: 338
01.07.2014, 22:01  [ТС]     Выделение памяти malloc приводит к неправильным расчетам #5
всяко пробовал, мистика, куда копать не понятно, может какой то лимит памяти привысил...
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
01.07.2014, 22:01     Выделение памяти malloc приводит к неправильным расчетам #6
Она работает правильно, до тех пор пока я в неё не добовляю очередную строчку выделения памяти malloc,
после чего все результаты расчетов вообще другие.
Возможно что:
1) После malloc буфер забит рандомным мусором, а ты этот мусор читаешь.
2) Программа где-то вылетела за границы выделенной malloc памяти.
3) У тебя объявлена глобальная переменная buff2 которая используется где-то в потрохах функции.
Одним словом, отладчик в лапы и вперед.
zasadadada
2 / 2 / 0
Регистрация: 03.05.2013
Сообщений: 338
01.07.2014, 22:06  [ТС]     Выделение памяти malloc приводит к неправильным расчетам #7
1 Я не читаю его, просто выделил память buff2
2 не понял, пункт 1?
3 buff2 внутри функции, менял имена на всякие buff123.....
Вообщем выделение памяти влияет на расчет, что щас происходит.

При выделении памяти в зоне видимости файла, над main() всё работает. Но идея не в этом.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
01.07.2014, 22:10     Выделение памяти malloc приводит к неправильным расчетам #8
1 Я не читаю его, просто выделил память buff2
2 не понял, пункт 1?
1) Зато читаете buff1 который тоже создается с помощью malloc и тоже изначально забит мусором.
2) buff1[100500]=1234 даст непредсказуемый эффект если в buff1 нет как минимум 100501 элементов.
zasadadada
2 / 2 / 0
Регистрация: 03.05.2013
Сообщений: 338
01.07.2014, 22:13  [ТС]     Выделение памяти malloc приводит к неправильным расчетам #9
Я вас понял, как же быть , обнулять от и до ? первый потом второй?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 22:17     Выделение памяти malloc приводит к неправильным расчетам
Еще ссылки по теме:

C++ Освобождение памяти malloc free
C++ Выделение памяти через malloc и считывание данных
Утечка памяти (решение СЛАУ методом Крамера, матрицы, malloc) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
01.07.2014, 22:17     Выделение памяти malloc приводит к неправильным расчетам #10
Не читать buff1[100500] если вы туда ничего не записали или если размер buff1 составляет десять байт. А уж что конкретно исправлять надо, это от вашего кода зависит.
Yandex
Объявления
01.07.2014, 22:17     Выделение памяти malloc приводит к неправильным расчетам
Ответ Создать тему
Опции темы

Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru