Je réalise un travail de traitement d'image en C++. Pour cela, j'utilise la bibliothèque CImg.h que je sens bien pour mon travail.Erreur de segmentation lors de l'entrée différente
Voici un petit morceau de code écrit par moi qui lit juste une image et l'affiche.
#include "../CImg.h"
#include "iostream"
using namespace std;
using namespace cimg_library;
int main(int argc,char**argv)
{
CImg<unsigned char> img(argv[1]);
img.display();
return 0;
}
Lorsque je donne à lena.pgm en entrée ce code, il affiche l'image. Où comme si je donnais une autre image, par exemple ddnl.pgm que je présente dans le même répertoire j'obtiens "Segmentation Fault".
Quand je courais le code à l'aide gdb je reçois la sortie comme suit:
Programme signal reçu SIGSEGV, Segmentation fault.
0x009823a3 dans strlen() à partir de /lib/libc.so.6
Absence de debuginfos séparés, utilisez: debuginfo-install glibc-2.9-2.i686 libX11-1.1.4-5.fc10.i386 libXau-1.0.4 -1.fc10.i386 libXdmcp-1.0.2-6.fc10.i386 libgcc-4.3.2-7.i386 libstdC++ - 4.3.2-7.i386 libxcb-1.1.91-5.fc10.i386
Quelqu'un peut-il me dire quel est le problème? et comment le résoudre.
Merci à tous
Il est hautement improbable que cela soit lié à votre problème, mais je pense que "#include" est considéré comme meilleur que "#include" iostream "' –
MatrixFrog
Y a-t-il une différence entre les deux images? Est-ce que l'un est significativement plus grand, par exemple? – GManNickG
Ce constructeur CImg qui prend un nom de fichier peut lever une exception (http://bit.ly/6hYyoi). De plus, vous ne vérifiez pas argc alors voyez si argv [1] est même défini. Je ne sais pas si c'est ça, je devine. Avez-vous essayé d'exécuter ceci sous un débogueur comme gdb? Si elle attrape une exception dans gdb, tapez "backtrace" pour voir ce qui s'est passé. – maxpolk