информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / software
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Проблемы с djgpp 26.07.01 05:19  
Автор: ProDman Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Самая приметивная программа вылетает при работе с указателями.
Вот код программы

//File tmp.c
#include <stdio.h>

int main()
{
int *ptmp;

*ptmp=12; //Вот здесь все и происходит
}

**********************Сообщение в окне Message Window***********************

Compiling: tmp.c
no errors
Creating: tmp.exe
no errors
Call frame traceback:
tmp.c(8) in function main
in function __crt1_startup+178

**********************Сообщение в окне Output from GDB*******************************

GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-pc-msdosdjgpp".
Breakpoint 1 at 0x1576: file tmp.c, line 8.
main () at tmp.c:8
8 *ptmp=10;

Program received signal SIGSEGV, Segmentation fault.
0x1579 in main () at tmp.c:8
8 *ptmp=10;

Program exited with code 0377.


**********************Сообщение в окне contents of stderr from tmp.exe **************

Exiting due to signal SIGSEGV
General Protection Fault at eip=00001579, error=0006
eax=00164f65 ebx=0000836d ecx=00000000 edx=0000033f esi=00000054 edi=0000cd48
ebp=002c8fe0 esp=002c8fc8 program=D:\Programs\djgpp\bin\tmp.exe
cs: sel=0217 base=836d6000 limit=fff06fff
ds: sel=021f base=836d6000 limit=fff06fff
es: sel=021f base=836d6000 limit=fff06fff
fs: sel=01ef base=00013090 limit=00003fff
gs: sel=022f base=00000000 limit=0010ffff
ss: sel=021f base=836d6000 limit=fff06fff
App stack: [002c9000..00249000] Exceptn stack: [0000cca8..0000ad68]

Call frame traceback EIPs:
0x00001579
0x00002922


Раньше все на ура работало.
... скорее, проблема в исходном тексте 26.07.01 10:52  
Автор: ukv Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> int main()
> {
> int *ptmp;
>
> *ptmp=12; //Вот здесь все и происходит
> }
>

Любой указатель надо инициализировать перед использованием.
А неинициализированный указатель будет адресовать либо нулевую ячейку
(если это статическая переменная), либо вообще черт знает что (для автоматических переменных, как в данном случае). Компилятор здесь не при чем.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach