![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Программирования высокого уровня Почтовые вопросы о C, C + +, Java, SQL и других языках программирования здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Какой Базовый уровень Filesets необходимы конкретные программы? | cypher82 | UNIX перспективных И опытных пользователей | 4 | 05-29-2008 09:07 AM |
| Помощь необходима в отношении с программой | dwgi32 | Программирования высокого уровня | 2 | 11-19-2007 10:44 AM |
| Weird дело о ФСБ и VGs | mhenryj | AIX | 4 | 11-13-2007 04:42 PM |
| Weird результаты AWK | amatheny | Shell программирование и сценарии | 2 | 11-01-2007 06:12 PM |
| Weird Сообщение???? | lesstjm | UNIX для чайников Вопросы И Ответы | 6 | 01-04-2002 10:01 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Спасибо
Спасибо, ребята за т ввода.
Ну N1, я думал об аналогичных линий. Принимая это шаг вперед, поскольку J было выделено 15 байт, даже если я входного буфера говорить о 20 (в основном> 15), программа не остановить. Теперь при THT K указывает на некоторые расположение в / пространство вокруг выделенных на J, почему вышеупомянутые условия не вызвать переполнение, а затем вызвать SEGV? Shouldn't SEGV происходить, когда моя программа посещений любой память вне выделенных ему пространство? (не говоря уже о силе / недействительные addessses) Кроме того, я заметил, THT до проведения sprintf на 'K', ее стоимость была в том, что после вывода, а также один раз в строку sprintf. Так может быть, они рассматриваются в качестве действительных адресов, и в рамках программы? BTW, я пришел с выше сценарий случайно, когда-то экспериментировали. Кроме того, я точно знаю, что я делаю, является незаконным, но perplexes меня, когда она работает! ![]() ![]() |
|
||||
|
Цитата:
Кроме того, разные архитектуры являются более жесткими, чем в отношении других (а) за написание кода районах (б) misaligned доступа. |
|
||||
|
Вы пробовали печати содержимого 'J', если она существует? После введения 'J' является то, что является причиной для остановки SEGV то я хотел бы угадать ее содержание, влияющие на результат.
Все настолько сосредоточено на 'K', я до сих пор не видеть никого упоминания 'Я'. В sprintf должны отрицать, что содержание 'Я', указывающая на что и выбрасывают на 'K'. Я подозреваю, что "J" и "Я больше отношения, чем" J "и" K ". Если бы мне пришлось принимать догадаться, 'J' (если она существует) имеет, в какой-то момент, нуль-терминатор ( '\ 0') в нем, и 'Я' является (в какой-то момент перед SEGV) работает в Содержание 'J'. Это, разумеется, ограничивает количество "мусора" вы можете прочитать так и пряник в unreferenced 'K' и, следовательно, уменьшает возможности для SEGV. Принять 'J' из картины и sprintf явно работает в области памяти, она не должна. Моя догадаться, хотя это, проходящих sprintf 'я' как вы переполнят щеколда из 'K', так как не существует нуль терминатор в памяти в течение определенного времени или нет недействительными терминаторе до sprintf попадает в сегмент текста и ОС не нравится нарушение данного сегмента. Я хотел бы проверить мою теорию, но AIX сердечников, независимо от присутствия 'J'. |
|
||||
|
может быть, но когда я распечатать содержимое J, это было "" (очевидно, так как это манекен).
Но, возможно, могут существовать некоторые мусор в 15 байт выделяется. Как и у упомянутых, то следует дампа основных оба раза. Кроме того, как Портер упоминали до операционной системы, когда / сколько он должен быть строгим. |
|
||||
|
А SEGV, по определению, значит, вы пытаетесь записать в сегменте вне памяти, выделяемой для вас. В первом случае, вы не имели хранения выделено только указатели, поэтому первый писать дал вам SEGV. Второй является более сложным для обнаружения ошибки. До тех пор, как вы пишете в любое памяти, выделяемой для вас, вы не получите SEGV. Ваши указатели только произойдет с точки выделяемых на память, в этом случае ваш J [] символьный массив. Напиши там достаточно материала, и вы получите SEGV там, если упасть в конце Вашего выделено памяти. Компилятор И во время библиотеки не имеют ни малейшего представления, если вы хотите, чтобы она указывала на выделенных память, или когда в этом выделяемые памяти нужно указать, с указателями. До тех пор, как вы, указывающих на выделенных памяти, времени выполнения, не будет выдавать SEGV (Вы не за написание выделенных памяти)
|
|
||||
|
Обычно штабеля распространяются на сегмент нарушений, а не выделять огромные стопки к процессу, она ставит охранник страниц ниже, и при поездке за этим он растет стек.
|
|
||||
|
Цитата:
Кроме того, я не уверен, что SEGV (по определению) всегда объясняется пишет. Существует текста и сегмента данных и я подозреваю, что попытка прочитать текст сегмент также может привести к SEGV в некоторых операционных системах. |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|