| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Область видимости и время жизни |
| Автор: konshyn 2.10.2014, 21:46 | ||||||
| Сначала код. Потом вопрос, который не могу решить. Он в пару строк:) файл A.h
Файл А.с
Файл main.c
Я хочу сделать в стиле сишных библиотек свою. Есть функция, которая инициализирует структуру и возвращает на нее указатель. А потом передавать этот указатель в другие функции, которые будут что-то делать, скрывая свои действия от пользователя, и возвращать результат. как это происходит в libnet, mysql-client и т.п. В коде, что выше, я показал пример. Но в функции use() происходи segmentation fault. Не могу разобраться. помогите, плиз |
| Автор: baldina 2.10.2014, 23:38 |
| оно до use доходит? <line 24> но если и доходит, то <line 36> а в остальном, прекрасная маркиза, http://ideone.com/Ofl1Sb |
| Автор: konshyn 3.10.2014, 12:57 | ||
Сначала нашел ошибку, а потом только открыл Ваш код:) А вообще, забавное совпадение с ошибкой, хотя причины разные. этот код всего лишь миниатюрная версия того, что я написал и где сделал ошибку. и здесь тоже - по невнимательности. в своей библиотеке тоже нашел ошибку. мини-код:
думаю, что знающие поняли ошибку. а незнающие, если интересно, пусть подумают. если никто не объяснит в комментариях ошибку, то позже разъясню. |
| Автор: baldman88 3.10.2014, 14:12 |
| И, если не секрет, где здесь ошибка? Если функция get_new_cell возвращает нормальный указатель (а вдруг она вернет NULL), то, по идее, все должно работать. В противном случае сегфолт будет в функции push_in_new_cell. При работе с указателями лучше всегда проверять их на валидность перед использованием. |
| Автор: baldina 4.10.2014, 23:30 |
| baldman88, параметры передаются по значению |