0

私はちょうどChttp://fromlearncodethehardway.comの学習を始めようとしています。ただし、そこから例の1つをコーディングしようとしているときに、セグメンテーション違反で立ち往生しています。これが私のソースコードへのリンクです。valgrindを使用してデバッグをさらに支援しようとしましたが、問題を理解できないようです。これがvalgrindからのスタックトレースです。

   ~/Chardway$ valgrind ./ex17 db.dat g
   ==4423== Memcheck, a memory error detector                                                                                 == 4423== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
 ==4423== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info
 ==4423== Command: ./ex17 db.dat g
 ==4423== 
 ==4423== Invalid read of size 1
 ==4423==    at 0x4EA4F1D: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:271)
 ==4423==    by 0x4E99DB5: __fopen_internal (iofopen.c:93)
 ==4423==    by 0x400A76: Database_open (ex17.c:65)
 ==4423==    by 0x400F7C: main (ex17.c:151)
 ==4423==  Address 0x722b is not stack'd, malloc'd or (recently) free'd
 ==4423== 
 ==4423== 
 ==4423== Process terminating with default action of signal 11 (SIGSEGV)
 ==4423==  Access not within mapped region at address 0x722B
 ==4423==    at 0x4EA4F1D: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:271)
 ==4423==    by 0x4E99DB5: __fopen_internal (iofopen.c:93)
 ==4423==    by 0x400A76: Database_open (ex17.c:65)
  ==4423==    by 0x400F7C: main (ex17.c:151)
.....

  ==4423== For counts of detected and suppressed errors, rerun with: -v
  ==4423== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)
 Segmentation fault

デバッグに関するヘルプは素晴らしいでしょう。ありがとう!

4

2 に答える 2

5

コードには、 &fopenとしての呼び出しがあります。それらは&である必要があります。2番目のパラメータは これが役立つことを願っています!fopen(filename,'w');fopen(filename,'r+');fopen(filename,"w");fopen(filename,"r+");fopenconst char *

于 2012-04-19T17:45:35.197 に答える
0

ちなみに、 http://c.learncodethehardway.org/という意味だと思います
。指定したアドレスは解決しません。

于 2012-04-19T20:14:16.300 に答える