读书人

这终究哪错了?

发布时间: 2013-12-02 12:00:40 作者: rapoo

这到底哪错了?????
int i;
char **p;
p = (char**)malloc(10);
for(i = 0;i < 10;i++)
{
p[i] = (char*)malloc(5);
}

for(i = 0;i < 10;i++)
{
free(p[i]);
}

free(p);

运行到最后一句free(p);出错,为什么
[解决办法]
malloc的参数是内存大小,单位为字节
malloc(10);申请10字节内存,一个指针大小为4字节,这块内存只能存放两个半指针
使用malloc的时候输入“数量*sizeof(类型)”
[解决办法]

引用:
malloc的参数是内存大小,单位为字节
malloc(10);申请10字节内存,一个指针大小为4字节,这块内存只能存放两个半指针
使用malloc的时候输入“数量*sizeof(类型)”

+1

malloc的时候必须用sizeof来求啊..手动估计遇到内存对齐就完了。

读书人网 >C语言

热点推荐