2017-06-02 6 views
-2
#include <stdlib.h> 
#include <stdio.h> 
int main() { 
    char **last_names; 
    // last_names has been assigned a char * array of length 4. Each element of the array has 
    // been assigned a char array of length 20. 
    // 
    // All of these memory has been allocated on the heap. 
    // Free all of the allocated memory (hint: 5 total arrays). 


    return 0; 
} 

私は自由()メソッドを知っていて、これは私のアプローチです。無料のフリー・ダイナミック・メモリ()

free(*last_names); 
free(last_names); 

しかし、そうではありません。すべてのヘルプは、コードのあなたの説明から推測

+2

よりもむしろあなたの割り当てを記述し、それをコードに表示する。 –

+1

(1) 'last_names'を割り当て、(2)個々の要素を' last_names'に割り当てるコードを追加してください – dasblinkenlight

答えて

0

を理解されるであろう、あなたのメモリ割り当ては次のようになります。次のように

last_names = malloc(4 * sizeof(char*)); 
for (int i = 0; i < 4; i++) 
    last_names[i] = malloc(20 * sizeof(char)); 

だから、割り当て解除が行われる必要があります:

for (int i = 0; i < 4; i++) 
    free(last_names[i]); 
free(last_names); 
関連する問題