Wenn ich einen Zeiger habe: char ** tmp = (char **)malloc(sizeof(char *) * MAX_SIZE)
, nach dem Zuweisen von Werten zu jedem Block, habe ich einen neuen Zeiger char ** ptr = tmp
.C malloc ein Zeiger mehrmals
1). Kann ich tmp = (char **)malloc(sizeof(char *) * MAX_SIZE)
malloc es wieder ohne free
es?
2). Hat der ptr
noch die Werte und auch tmp
zeigt auf einen neuen Speicherblock?
Ich habe eine Funktion, um alle verwendeten Speicher am Ende zu befreien, also mach dir keine Sorgen über free
.
einfache Antwort 1 = ja, 2 = ja. mehr Erklärung: Wenn du 'malloc' das erste Mal einen Speicherblock zugewiesen hast, erhält' tmp' den Zeiger auf diesen Ort. dann speichern Sie den Zeiger auf 'ptr' (jetzt haben sowohl' tmp' als auch 'ptr' den Zeiger auf dieselbe Position). Wenn Sie das zweite 'malloc' aufrufen, wird ein weiterer Speicherblock zugewiesen und' tmp' erhält den neuen Zeiger. aber 'ptr' haben immer noch den alten. – bansi