首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组指针的释放,该怎么解决

2012-04-07 
数组指针的释放C/C++ code#include stdio.h#include stdlib.hint main(){char (*p)[30]int i, j, ns

数组指针的释放

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); 

热点排行