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

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

2012-03-19 
内存分配。。。。指针问题。。。急!!!/*#include stdio.h#include stdlib.hvoid main(){int a1 5int a2[ ]

内存分配。。。。指针问题。。。急!!!
/*
#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);} 

热点排行
Bad Request.