读书人

内存分配。指针有关问题。

发布时间: 2012-03-19 22:03:05 作者: rapoo

内存分配。。。。指针问题。。。急!!!
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
int a1 = 5;
int a2[ ] = {4,2,3,2,4};
int i,j;
int * * p_array; //也可以用int * p_array[ 5 ]
p_array = (int**)calloc(a1,sizeof(int *));
for(i=0; i<a1; i++)

p_array[i] = (int*)calloc(a2[i],sizeof(int));

for(i=0; i<a1; i++)
for(j=0; j<a2[i]; j++)
p_array[i][j] = 1+2*i*j;
for(i=0; i<a1; i++)
{
for(j=0; j<a2[i]; j++)
printf("%d ",p_array[i][j]);
printf("\n");
}
for(i=0; i<a1; i++)

free(p_array[i]);
free(p_array);
}
*/

#include<stdio.h>
#include<stdlib.h>
void main()
{
int a1=5;
int a2[]={4,2,3,2,4};
int i,j;
int **p;//int *p[5];
p=(int**)calloc(a1,sizeof(int *));
for(i=0;i<a1;i++)
*p=(int *)calloc(a2[i],sizeof(int));

for(i=0;i<a1;i++)
for(j=0;j<a2[i];j++)
**p=1+2*i*j;
for(i=0;i<a1;i++)
{for(j=0;j<a2[i];j++)

printf("%d ",**p);
printf("\n");
}

for(i=0;i<a1;i++)
free(*p);
free(p);
}
上面两个函数有啥区别?为什么上面的函数在vc6.0中能成功而下面的却不行??求大牛帮帮改改。。。谢谢!!!

[解决办法]
for(i=0;i<a1;i++)
free(p[i]); //最后这里写错了
free(p);
[解决办法]

C/C++ code
#include<stdio.h>#include<stdlib.h>void main(){int a1=5;int a2[]={4,2,3,2,4};int i,j;int **p;//int *p[5];  p=(int**)calloc(a1,sizeof(int *));for(i=0;i<a1;i++)*(p + i)=(int *)calloc(a2[i],sizeof(int)); //怎么一直是*p呢?for(i=0;i<a1;i++)for(j=0;j<a2[i];j++)*(*(p + i) + j)=1+2*i*j; //这里for(i=0;i<a1;i++){for(j=0;j<a2[i];j++)  printf("%d ",*(*(p + i) + j)); //这里printf("\n");}for(i=0;i<a1;i++)free(*(p + i)); //这里free(p);} 

读书人网 >C语言

热点推荐