Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Warnungen bei splint

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.09.2003, 17:23 Uhr
~xodi
Gast


Hallo!

Nachdem ich dachte, ich hab halbwegs sauber programmiert (wenigstens mal keine Warnung beim gcc -Wall), musste ich durch den splint das Gegenteil feststellen.
Da hab ich jetzt mittlerweile noch 128 Warnings, die ich so nicht wegbekomm.

Deswegen habe ich da die ein oder andere Frage ans Board.

Passed storage transdir not completely defined (*transdir is undefined): getnexttransdir (transdir, ...)
Storage derivable from a parameter, return value or global is not be defined.

Die Zeilen sehen so aus:


C++:

char *transdir, *transname;

    transdir = (char *) malloc(200);
    transname = (char *) malloc(80);

    while(getnexttransdir(transdir, transname) == 1)  // <- Gemecker an diese Zeile



U.A. diesen Fehler hab ich so an die 20 mal.
Hat jemand ne Idee, was der splint da von mir will?

Viele Grüße
xodi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.09.2003, 17:42 Uhr
~StefanD
Gast


Der Speicher, auf den transdir zeigt, ist undefiniert. Könnte es das sein. So lese ich die Meldung jedenfalls. Mach mal std::memset(transdir, ....).


Stefan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.09.2003, 18:02 Uhr
~xodi
Gast


hm - aber durch die Zeile:


C++:
transdir = (char *) malloc(200);



gebe ich doch den Typ char* vor, oder?
ich programmiere in Ansi C und kann mit std::memset nicht viel anfangen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.09.2003, 18:09 Uhr
~xodi
Gast


Noch was allgemeines zu File-Pointern:

Ich will einen File-Pointer für mehrere Dateien verwenden (nacheinander).
wenn ich nun also mit


C++:
FILE *ddp;



einen solchen deklariere und mit

C++:
ddp = fopen(path_and_filename,"w");


einen Filehandle öffne und ihn dann mit

C++:
fclose(ddp);



wieder zumache... Dann kann ich diese Prozedur doch eigentlich zig mal wiederholen, oder?

Splint jedenfalls meckert :

xoditool.c:774:2: Fresh storage ddp (type FILE *) not released before
assignment: ddp = open_file(buffer, "w")


Hat jemand nen Tipp für mich?
Thnx schonmal!

xodi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.09.2003, 18:11 Uhr
0xdeadbeef
Gott
(Operator)


memset ist ne ANSI-C-Funktion. In C:

C++:
#include <string.h>

/* ... */

memset(adresse, inhalt, laenge);


in C++:

C++:
#include <cstring>

//...

std::memset(...);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.09.2003, 18:13 Uhr
0xdeadbeef
Gott
(Operator)


Allerdings würde ich an deiner Stelle, weil du eh konstante Längen annimmst, folgendes machen:

C++:
char transdir[200], transname[80];


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.09.2003, 19:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nach fclose(ddp) einfach ein ddp = NULL; dann sollte er nicht mehr meckern!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.09.2003, 20:50 Uhr
~xodi
Gast


Es ist wohl doch ein heftigerer Fehler mit dem ddp.

Mittlerweile hab ich segmentation faults, wenn ich versuche das zweite mal in die Datei zu schreiben. Im GDB tritt nach

C++:
fprintf(ddp, "ein Text\n");



der sigsegv auf.

Hm, mal schauen ob ich das umgehen kann indem ich mehrere Filepointer nehme.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.09.2003, 21:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


schau mal nach dem 2ten fopen ob ddp initialisiert worden ist!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.09.2003, 21:59 Uhr
~xodi
Gast


kann nichts erkennen


C++:
    FILE *ddp;

    ddp = fopen("file1.txt", "w");
    fprintf(ddp, "Text1\n");
             fclose(ddp);
             // ...
    ddp = fopen("file2.txt", "w");
    fprintf(ddp, "Text2\n");                    // <-- Buff, hier crashts
             fclose(ddp);

             // ...

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: