问题描述
- c语言二级指针申请空间问题
-
char **data;
*data = malloc (100);
为什么段错误
应该怎么申请
解决方案
*data = malloc (sizeof(char *) * 100);
for (int i = 0; i < 100; i++)
{
data[i] = malloc(sizeif(char));
}
解决方案二:
**只申请两次。共1M左右内存
char **data=malloc(sizeof(char *)*100);
data[0] =malloc(1000000*sizeof(char));
for(int i=1;i<100;i++)
{
data[i] =data[i-1]+10000;
}
.....................
free(data[0]);
free(data);**
解决方案三:
**只申请两次。共1M左右内存
char **data=malloc(sizeof(char *)*100);
data[0] =malloc(1000000*sizeof(char));
for(int i=1;i<100;i++)
{
data[i] =data[i-1]+10000;
}
.....................
free(data[0]);
free(data);**
解决方案四:
申请 101次.100个指针空间,数据空间,每次申请100~199字节内存。
char **data=(char **)malloc(sizeof(char *)*100);
for(int i=0;i<100;i++)
{
data[i] =(char*)malloc(sizeof(char)*(100+rand()%100);
}
.....................
for(int i=0;i<100;i++)
free(data[i]);
free(data);**
解决方案五:
http://ask.csdn.net/questions/226143
解决方案六:
data没有初始化:
char **data, *p;
*data=p;
p = (char*)malloc (100*sizeof(char));
解决方案七:
这样:
data没有初始化:
char **data, *p;
data=&p;
p = (char*)malloc (100*sizeof(char));
解决方案八:
C语言中的二级指针和二维数组问题
C语言中的二级指针和二维数组问题
C语言指针问题快速解惑
解决方案九:
char **data;
data = (char **) malloc(sizeof(char ));
for (i=0; i<100; i++)
{
data[i] = (char) malloc(100 * sizeof(char));
}