* [Comm] Странный segmentation fault - помогите разобраться
@ 2006-07-07 16:23 Olvin
2006-07-07 17:47 ` Хихин Руслан
2006-07-08 5:00 ` Damir Shayhutdinov
0 siblings, 2 replies; 4+ messages in thread
From: Olvin @ 2006-07-07 16:23 UTC (permalink / raw)
To: ALT Linux Community
Вот такая програмка (файл test.c):
#include <fcntl.h>
int main (int argc, char *argv[]) {
int fd,tmp,a;
struct stat *buf;
void *fb;
fd = open("/tmp/tst",O_RDONLY);
tmp = fstat(fd,buf);
}
Компиляция:
$ cc -o test test.c
Запуск:
$ touch /tmp/tst
$ ./test
Segmentation fault
$
Но стоит изменить int fd,tmp,a на int fd,tmp и уже не сегфолтится.
Однако при попытке распечатать с помощью того же printf значение tmp -
снова сегфолт.
В чём дело?
$ cc --version
2.96
$ uname -a
Linux olvin.enigma.local 2.4.26-std-up-alt13 #1 Mon Nov 14 00:25:14 MSK
2005 i686 unknown unknown GNU/Linux
ALM2.4.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Comm] Странный segmentation fault - помогите разобраться
2006-07-07 16:23 [Comm] Странный segmentation fault - помогите разобраться Olvin
@ 2006-07-07 17:47 ` Хихин Руслан
2006-07-08 9:49 ` Olvin
2006-07-08 5:00 ` Damir Shayhutdinov
1 sibling, 1 reply; 4+ messages in thread
From: Хихин Руслан @ 2006-07-07 17:47 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 742 bytes --]
Здравствуйте Olvin
В сообщении от 7 июля 2006 20:23 Olvin написал(a):
> Вот такая програмка (файл test.c):
>
>
>
> #include <fcntl.h>
>
> int main (int argc, char *argv[]) {
>
> int fd,tmp,a;
>
> struct stat *buf;
>
> void *fb;
>
> fd = open("/tmp/tst",O_RDONLY);
>
> tmp = fstat(fd,buf);
>
> }
>
Под структуру stat вы не отвели место (buf указывает неизвестно куда) -
естественно после выполнения функции fstat задача разваливается - пишет
неизвестно куда.
--
А ещё говорят так (fortune):
php у нас собирается так, чтобы каждый мог собрать себе все что нужно.
-- lakostis in devel@
________________________________________________________________________
С уважением Хихин Руслан (hihin@rambler.ru)
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Comm] Странный segmentation fault - помогите разобраться
2006-07-07 17:47 ` Хихин Руслан
@ 2006-07-08 9:49 ` Olvin
0 siblings, 0 replies; 4+ messages in thread
From: Olvin @ 2006-07-08 9:49 UTC (permalink / raw)
To: hihin, ALT Linux Community
Хихин Руслан wrote:
> > #include <fcntl.h>
> >
> > int main (int argc, char *argv[]) {
> >
> > int fd,tmp,a;
> >
> > struct stat *buf;
> >
> > void *fb;
> >
> > fd = open("/tmp/tst",O_RDONLY);
> >
> > tmp = fstat(fd,buf);
> >
> > }
> >
> Под структуру stat вы не отвели место (buf указывает неизвестно куда) -
> естественно после выполнения функции fstat задача разваливается - пишет
> неизвестно куда.
:)
Да, вот что значит давно к Си не притрагивался.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Comm] Странный segmentation fault - помогите разобраться
2006-07-07 16:23 [Comm] Странный segmentation fault - помогите разобраться Olvin
2006-07-07 17:47 ` Хихин Руслан
@ 2006-07-08 5:00 ` Damir Shayhutdinov
1 sibling, 0 replies; 4+ messages in thread
From: Damir Shayhutdinov @ 2006-07-08 5:00 UTC (permalink / raw)
To: ALT Linux Community
07.07.06, Olvin<olvin@rambler.ru> написал(а):
> Вот такая програмка (файл test.c):
Вот так надо:
#include <fcntl.h>
int main (int argc, char *argv[]) {
int fd,tmp,a;
struct stat buf;
void *fb;
fd = open("/tmp/tst",O_RDONLY);
tmp = fstat(fd, &buf);
}
Отличие - в том, что в fstat передается указатель на существующую
структуру (размещенную в стеке).
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-07-08 9:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-07 16:23 [Comm] Странный segmentation fault - помогите разобраться Olvin
2006-07-07 17:47 ` Хихин Руслан
2006-07-08 9:49 ` Olvin
2006-07-08 5:00 ` Damir Shayhutdinov
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git