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

17
Что ДЕЙСТВИТЕЛЬНО происходит, когда вы не освобождаетесь после malloc?
Это было то, что беспокоило меня целую вечность. Нас всех учат в школе (по крайней мере, так было), что вы ДОЛЖНЫ освободить каждый указатель, который выделен. Мне немного любопытно, однако, о реальной стоимости не освобождения памяти. В некоторых очевидных случаях, например, когда mallocвызывается внутри цикла или части выполнения потока, очень …
538 c  malloc  free 

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

13
Как работают 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; return 0; } Я был бы очень признателен, если …

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

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

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

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

3
Зачем приводить возвращаемое значение free к void?
Я читаю книгу ( Программирование с помощью POSIX Threads by Butenhof, 1997), в которой используется C, и наткнулся на следующую строку: (void)free(data); Здесь dataпросто указатель на выделенную структуру, data = malloc(sizeof(my_struct_t)); Почему результат freeбудет приведен к void? Из моего понимания C это, кажется, не имеет смысла по двум причинам: Бесплатная …
82 c  casting  free  void  legacy-code 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.