数组指针的释放
- C/C++ code
#include <stdio.h>#include <stdlib.h>int main(){ char (*p)[30]; int i, j, n; scanf("%d", &n); p = (char(*)[30])malloc(sizeof(char) * n); for(i = 0; i < n; i++) { scanf("%s", p[i]); } for(i = 0; i < n; i++) { printf("%s\n", *(p+i)); } free((char(*)[30])p); return 0;}
为什么这个程序我在gcc 下跑,什么问题都没有,在vc6.0下就有错误?
数组指针不是这么释放内存吗?
[解决办法]
p = (char(*)[30])malloc(sizeof(char) * n)这一句改为:
p = (char(*)[30])malloc(sizeof(char) * n * 30 )就行了。
注意每次输入的字符个数不应该超过29个。
[解决办法]
如果你想分配n个char[30]这样的类型那么应该是
- C/C++ code
p = (char(*)[30])malloc(sizeof(char[30]) * n); for(i = 0; i < n; i++) { scanf("%s", p[i]); } for(i = 0; i < n; i++) { printf("%s\n", *(p+i)); } free(p);