C语言:使用malloc申请一个二级指针,外层为3个元素,内层为5个元素。使用并释放。
//使用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" int main() { 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; }
posted on 2022-04-19 14:11 AnonymousJDK 阅读(187) 评论(0) 编辑 收藏 举报