|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.10.2014, 19:51 | #1 |
Форумчанин
Регистрация: 03.10.2010
Сообщений: 321
|
Выделение памяти в функции
Код:
Почему данный код генерирует Segmentation fault? Почему выделяемая память в func не сохраняется в указателе при выходе из функции? |
13.10.2014, 22:36 | #2 | |
Пользователь
Регистрация: 25.12.2013
Сообщений: 91
|
Цитата:
Чтобы не потерять адрес памяти, выделенной в функции, надо вернуть из функции указатель на этот участок памяти и записать этот адрес в указатель, определённый в main() Код:
|
|
13.10.2014, 22:51 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Код:
Кстатти: http://www.programmersforum.ru/showthread.php?t=92433
I'm learning to live...
Последний раз редактировалось Stilet; 13.10.2014 в 22:54. |
14.10.2014, 08:56 | #4 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Hemul, а вообще, используйте C++ строки вместо сишных:
Код:
|
14.10.2014, 11:44 | #5 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Внутри функции фигурирует копия указателя, а вовсе не оригинал: Код:
И когда функция завершается, заканчивается время жизни этой копии. А оригинальный указатель остается без изменений. Что бы внутри функции влиять на оригинальные данные, а не на копии, можно пойти двумя путями: 1. Путь сишника. Передавайте в функцию указатель на указатель. Господин Stilet показал вам пример..... Лично я считаю, что путь сишника в с++ коде это плохо. Потому что на языке с++ можно сделать проще, безопаснее и эффективнее. 2. Путь сишника-с-крестами (в народе просто: плюснутого, приплюснутого, крестанутого, крестухана, крестобл... ну вы понэли) Если функция ожидает реально существующий объект, и внутри функции нужно влиять на оригинал, а не на копию - передают ссылку на этот объект: Код:
Последний раз редактировалось _Bers; 14.10.2014 в 12:11. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Распределение памяти. Динамическое выделение памяти с++ | Tolian92 | Помощь студентам | 8 | 14.05.2012 21:44 |
Язык СИ! Динамическое выделение памяти под массивы и матрицы, передача матрицы в функции | Андрей! | Общие вопросы C/C++ | 33 | 31.01.2012 22:07 |
Выделение памяти в функции | SVLay | Visual C++ | 4 | 22.01.2012 16:53 |
Выделение памяти | antoha.by | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 29.04.2008 20:04 |
Выделение памяти в функции для переданных параметров | LinuxUser | Общие вопросы C/C++ | 1 | 12.11.2007 19:21 |