Hi,
zur Warning No1:
kernel/futex.c: In Funktion »handle_futex_death«:
kernel/futex.c:2454: Warnung: »nval« may be used uninitialized in this function
Erklärung / Beispiel (Pseudo-Code) :
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
ClassX *getInstance(String str)
{
ClassX * obj;
if (str == "A")
obj = new ClassX("A");
else if (str == "B")
obj = new ClassX("B");
return obj;
}
|
Die Funktion getInstance soll eine Instanz der Klasse ClassX zurückgeben. Diese Instanz soll
obj sein, werden (Zeile 3). In Zeile 5 / 7 wird überprüft, ob der übergebene String gleich "A" oder "B" ist ( Es soll nur ein Beispiel sein
was Besseres fällt mir grad net ein ). Wenn er "A" oder "B" ist, wird eine neue Instanz (Zeile 6 /
mit
new erzeugt. Obj besitzt dann die Speicheradresse der Instanz (Zeiger). Man könnte sagen, hinter
obj steckt die Instanz. Dies wird in Zeile 10 an den Aufrufer der Funktion zurückgegeben. Jetzt das Problem: Wenn der übergebene String str weder "A" noch "B" ist, wird in dem Fall keine Instanz erzeugt. Ich sage mal so,
obj zeigt irgendwohin. Es ist nicht definiert. Sogesehen kann das im schlimmsten Fall "knallen".
Unter Java gilt das noch nicht mal als Warning, sondern als Error. Ist von Sprache zu Sprache unterschiedlich.
Ich hoffe, der Sinn der 1. Warning ist etwas klarer geworden.