Вопросы с тегом «free»

538
Что ДЕЙСТВИТЕЛЬНО происходит, когда вы не освобождаетесь после malloc?

Это было то, что беспокоило меня целую вечность. Нас всех учат в школе (по крайней мере, так было), что вы ДОЛЖНЫ освободить каждый указатель, который выделен. Мне немного любопытно, однако, о реальной стоимости не освобождения памяти. В некоторых очевидных случаях, например, когда mallocвызывается...

385
Как бесплатно узнать, сколько освободить?

В программировании на C вы можете передать любой указатель, который вам нравится, в качестве аргумента для освобождения. Как он узнает размер выделенной памяти для освобождения? Всякий раз, когда я передаю указатель на какую-то функцию, я также должен передать размер (то есть массив из 10 элементов...

276
Как работают malloc () и free ()?

Я хочу знать, как mallocи freeработать. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p;...

156
Установка переменной в NULL после освобождения

В моей компании есть правило кодирования, которое гласит, что после освобождения памяти сбросьте переменную в NULL. Например ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Я чувствую, что в случаях, подобных приведенному выше коду, установка значения...

113
Повреждает ли память (ptr), где ptr - NULL?

Теоретически могу сказать, что free(ptr); free(ptr); - это повреждение памяти, поскольку мы освобождаем уже освобожденную память. А вдруг free(ptr); ptr=NULL; free(ptr); Поскольку ОС будет вести себя неопределенным образом, я не могу получить фактический теоретический анализ происходящего. Что бы я...

103
Что такое стиль «без точек» (в функциональном программировании)?

Фраза, которую я недавно заметил, - это концепция стиля «без точек» ... Сначала был этот вопрос, а также этот . Затем я обнаружил, что здесь упоминается: «Еще одна тема, которую, возможно, стоит обсудить, - это неприязнь авторов к безточечному стилю». Что такое стиль «без точек»? Может кто-нибудь...

92
Как отследить ошибку «двойное освобождение или повреждение»

Когда я запускаю свою программу (C ++), она вылетает с этой ошибкой. * обнаружена glibc * ./load: двойное освобождение или повреждение (! предыдущая): 0x0000000000c6ed50 *** Как я могу отследить ошибку? Я безуспешно пытался использовать std::coutоператоры print ( ). Может ли gdbэто сделать проще?...

86
Безблокировочная многопоточность для настоящих экспертов по резьбонарезанию

Я читал ответ, который Джон Скит дал на вопрос, и в нем он упомянул следующее: Насколько мне известно, многопоточность без блокировок предназначена для настоящих экспертов по многопоточности, к которым я не принадлежу. Это не первый раз, когда я слышу это, но я обнаружил, что очень мало людей...

84
Почему `free` в C не берет количество байтов, которые нужно освободить?

Чтобы быть ясным: я знаю, что mallocи freeони реализованы в библиотеке C, которая обычно выделяет фрагменты памяти из ОС и выполняет собственное управление для распределения меньших объемов памяти для приложения и отслеживает количество выделенных байтов. . Этот вопрос не в том, как бесплатно...

82
Зачем приводить возвращаемое значение free к void?

Я читаю книгу ( Программирование с помощью POSIX Threads by Butenhof, 1997), в которой используется C, и наткнулся на следующую строку: (void)free(data); Здесь dataпросто указатель на выделенную структуру, data = malloc(sizeof(my_struct_t)); Почему результат freeбудет приведен к void? Из моего...

80
Есть ли готовая к производству очередь без блокировок или хеш-реализация на C ++ [закрыто]

Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow. Закрыт 2 года назад . Уточните этот вопрос Я довольно много искал в Google...

12
Объединяя фрагменты кода Haskell, чтобы получить большую картину

Это код, который я где-то нашел, но хочу знать, как это работает: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filter (pred . snd) (zip [0..] xs)) Вывод: findIndices (== 0) [1,2,0,3,0]==[2,4] , где predесть (==0)& xsесть[1,2,0,3,0] Я...