Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2016, 14:49   #1
chakalov
Новичок
Джуниор
 
Регистрация: 25.04.2016
Сообщений: 2
По умолчанию Проблема с кодом на СИ

Доброго времени суток всем!
Изучаю работу с динамической памятью на СИ

Есть такой код:
Код:
#include <stdio.h>
#include <stdlib.h>

int main() {
	int count = 4;
	int amount = 4;
        int i, j;


        // Создаю одномерный массив указателей
	int **ptr = (int**) malloc( count * sizeof( **ptr ) );

	for( i = 0; i < count; i++ ) {
                // Тут собственно создаю для каждого указателя массив из 4 эл.
		ptr[i] = (int*) malloc( amount  * sizeof( **ptr ) ); 
		for( j = 0; j < count; j++ ) {
			ptr[i][j] = rand() % 100;
		}
	}
        // Попытка увеличить кол-во указателей
	count = 8;
	ptr = ( int** ) realloc( ptr, count * sizeof( **ptr ) );
        
        // Собственно заполняю новые массивы
	for( i = 4; i < count; i++ ) {
		ptr[i] = (int*) malloc( amount * sizeof( *ptr ) );
		for( j = 0; j < amount; j++ ) {
			ptr[i][j] = -21;
		}
	}
        // Вывод всего добра на экран
	for( i = 0; i < count; i++ ) {
		for( j = 0; j < amount; j++ ) {
			printf( "ptr[%d][%d] = %d\n", i, j, ptr[i][j]);
		}
		puts("");
	}
        // Очистка памяти
	for( i = 0; i < count; i++ ) {
		free( ptr[i] );
	}
	free( ptr );

	return 0;
}
Все компилируется вручную с помощью GCC в терминале Ubuntu 16.04
При попытке запуска программа аварийно завершается. Утечка памяти происходит в моменте увеличения с помощью realloc. Но, что не так, не пойму. Делал точно по уроку.
Помогите пожалуйста разобраться в чем проблема. Спасибо)



_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 25.04.2016 в 14:55.
chakalov вне форума Ответить с цитированием
Старый 25.04.2016, 15:24   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Во всех sizeof убрать по одной звездочке и заменить ptr на int.
waleri вне форума Ответить с цитированием
Старый 25.04.2016, 15:48   #3
chakalov
Новичок
Джуниор
 
Регистрация: 25.04.2016
Сообщений: 2
По умолчанию

Спасибо огромное!) Работает
chakalov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодом Dkey PHP 4 20.08.2012 14:17
Проблема с кодом. Blind Guard Общие вопросы C/C++ 1 20.03.2012 20:58
проблема с кодом net_probelam Общие вопросы C/C++ 1 19.10.2011 02:06
Проблема с кодом. scottie Паскаль, Turbo Pascal, PascalABC.NET 3 11.04.2010 15:44
Проблема с кодом( DM_bite Помощь студентам 3 02.08.2008 20:02