C語言:使用malloc申請一個二級指標,外層為3個元素,內層為5個元素。使用並釋放。
阿新 • • 發佈:2022-04-19
//使用malloc申請一個二級指標,外層為3個元素,內層為5個元素。使用並釋放。 #include"head.h" int main() { int **p = (int **)malloc(sizeof(int *) * 3); for (int i = 0; i < 5; i++) { p[i] = (int *)malloc(sizeof(int) * 5); } //使用元素 for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { p[i][j] = i + j; } } //打印出元素 for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { printf("%d ", p[i][j]); }; printf("\n"); } //釋放內層 for (int i = 0; i < 3; i++) { free(p[i]); } //釋放外層 free(p); return EXIT_SUCCESS; }
總是出錯,Visual studio報中斷。於是開始檢查:
發現給二級指標申請了三個指標儲存位 但是卻使用了五個
更改後為:
//使用malloc申請一個二級指標,外層為3個元素,內層為5個元素。使用並釋放。 #include"head.h" intmain() { int **p = (int **)malloc(sizeof(int *) * 3); for (int i = 0; i < 3; i++) { p[i] = (int *)malloc(sizeof(int) * 5); } //使用元素 for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { p[i][j] = i + j; } } //打印出元素 for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { printf("%d", p[i][j]); }; printf("\n"); } //釋放內層 for (int i = 0; i < 3; i++) { free(p[i]); } //釋放外層 free(p); return EXIT_SUCCESS; }