|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.08.2014, 11:57 | #1 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
malloc (выделение памяти двумерному массиву)
Здравствуйте, подскажите пожалуйста, правильно ли тут построено выделение памяти. Если неправильно, то почему?
Спасибо. Код:
Последний раз редактировалось Lifeda92; 26.08.2014 в 12:57. |
26.08.2014, 12:36 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я бы делал так: http://www.programmersforum.ru/showthread.php?t=117524
I'm learning to live...
|
26.08.2014, 13:27 | #3 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
Подскажите еще пожалуйста, логических ошибок в блоке выделения памяти нету?
План по выделению памяти: 1. Выделяется массив указателей с кол-во элементов n (0..n-1). 2. Выделяется двумерный массив с кол-во элементов n*n (n..2n-1, 2n..3n-1, 3n..4n-1, 4n..5n-1). 3. Указатели массива указателей, указывают на адреса ячеек двумерного массива с интервалами n..2n-1, 2n..3n-1, 3n..4n-1, 4n..5n-1. Программа делает то что я думаю? Спасибо. |
26.08.2014, 13:38 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я не большой спец по Сям, но по-моему твой пример делает что-то не совсем то.
Т.е. само выделение памяти как по мне... мягко говоря нестандартное. Я как-то больше предпочитаю свой метод, выложенный выше
I'm learning to live...
|
26.08.2014, 15:01 | #5 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,680
|
Stilet спасибо за ссылку, все предельно понятно расписано. Пригодиться.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
26.08.2014, 15:10 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Пожалуйста )
I'm learning to live...
|
26.08.2014, 15:13 | #7 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
Тут ошибка была (завтыкал и написал i+1*k вот так правильно n*k):
Код:
|
26.08.2014, 15:16 | #8 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,680
|
Одна из.... Возьми за основу ссылку. которую скинул Stilet. Откровенно говоря лично я уже перестал понимать Ваш код.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
26.08.2014, 15:19 | #9 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
А какие еще есть? Подскажи пожалуйста.
Ведь при компиляции и линковке ошибок и предупреждений нету. Значит какие-то логические ошибки... int **m = (int**)malloc(n*sizeof(int*) + sizeof(int)*n*n); <-- Тут я создаю массив указателей и еще просто 1 длинный массив. |*|*|*|*|&|&|&|&|&|&|&|&|&|&|&|&|&| &|&|&| Я хотел чтобы было вот так: for (un_int i = n-1, k = 1; i+1 < n+n; ++i, ++k) m[i+1-n] = (int*)&m[n*k]; // Передаем адрес ячейки указателю с интервалом "n" |*| -> |&|&|&|&| 0 ----- 4 5 6 7 |*| -> |&|&|&|&| 1 ----- 8 9 10 11 |*| -> |&|&|&|&| 2 ----- 12 13 14 15 |*| -> |&|&|&|&| 3 ----- 16 17 18 19 И программа выводит все точно как по плану: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 И никак не могу понять, есть тут ошибки или нету... Последний раз редактировалось Lifeda92; 26.08.2014 в 15:28. |
26.08.2014, 15:23 | #10 | |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,680
|
Цитата:
Особенно вот это здорово Код:
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! Последний раз редактировалось Bugrimov; 26.08.2014 в 15:30. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по двумерному массиву | EdvardAvd | Помощь студентам | 16 | 26.11.2013 17:24 |
как пройти по двумерному массиву | realgleb | Общие вопросы C/C++ | 9 | 10.05.2012 21:36 |
процедура к двумерному массиву | Alenaa | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.11.2011 19:34 |
Поиск числа по двумерному массиву. | Ibanez Wizard | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 31.03.2011 13:52 |
помогите решить задачу по двумерному массиву | Kain | Помощь студентам | 3 | 10.11.2008 17:34 |