คราวที่แล้วขอบคุณ คุณ zkaru ด้วยคับผ่านแล้วคับ
ที่นี้ผมลองทำเป็นแบบ2มิตินะคับ งงตรงที่ว่า พอให้เป็น int มันก็ผ่านปรกติ แต่พอเป็น char ติดตรง loop free อีกแล้ว - -*
ลองไล่ๆเองดูก็ไม่ถูกซักที - -*
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,j=0;
//int{i}{j}
int ***bug110=NULL;
bug110=(int ***)malloc(sizeof(int*)*4*5);
printf("&bug110=%d \n",(long)&bug110);
printf("bug110=%d \n",(long)bug110);
for (i=0;i<4;i++)
{
bug110{i}=(int **)malloc(sizeof(int)*4*5);
printf("&bug110{%d}=%d \n",i,(long)&bug110{i});
printf("bug110{%d}=%d \n",i,(long)bug110{i});
for(j=0;j<5;j++)
{
bug110{i}{j}=(int *)malloc(sizeof(int)*4*5);
*(bug110{i}{j})=(i*5)+j;
printf("&bug110{%d}{%d}=%d \n",i,j,(long)&bug110{i}{j});
printf("bug110{%d}{%d}=%d \n",i,j,(long)bug110{i}{j});
printf("*(bug110{%d}{%d})=%d \n\n",i,j,*(bug110{i}{j}));
}
}
printf("free \n");
for(i=0;i<4;i++)
{
printf("{%d}\n",i);
for(j=0;j<5;j++)
{
printf("{%d}{%d}\n",i,j);
free(bug110{i}{j});
bug110{i}{j}=NULL;
}
free(bug110{i});
bug110{i}=NULL;
}
free(bug110);
bug110=NULL;
printf("-------------------------------\n");
//char{i}{j}
char ***b100=NULL;
b100=(char ***)malloc(sizeof(char*)*4*5);
printf("&b100=%d \n",(long)&b100);
printf("b100=%d \n",(long)b100);
for (i=0;i<4;i++)
{
b100{i}=(char **)malloc(sizeof(char)*4*5);
printf("&b100{%d}=%d \n",i,(long)&b100);
printf("b100{%d}=%d \n",i,(long)b100);
for(j=0;j<5;j++)
{
b100{i}{j}=(char *)malloc(sizeof(char)*4*5);
if(j+1==5)
{
*(b100{i}{j})='\0';
}
else
{
*(b100{i}{j})=97+(i*5)+j;
}
printf("&b100{%d}{%d}=%d \n",i,j,(long)&b100{i}{j});
printf("b100{%d}{%d}=%d \n",i,j,(long)b100{i}{j});
printf("*(b100{%d}{%d})=%c \n\n",i,j,*(b100{i}{j}));
}
}
printf("free\n");
for(i=0;i<4;i++)
{
printf("{%d}\n",i);
for(j=0;j<5;j++)
{
printf("{%d}{%d}\n",i,j);
free(b100{i}{j});
b100=NULL;
}
free(b100{i});
b100{i}=NULL;
}
free(b100);
b100=NULL;
printf("-------------------------------\n");
return(0);
}
ปล.ขอขอบคุณทุกท่านที่มาช่วยตอบนะคับ _/\_
มีปัญหาภาษาCนะคับ
ที่นี้ผมลองทำเป็นแบบ2มิตินะคับ งงตรงที่ว่า พอให้เป็น int มันก็ผ่านปรกติ แต่พอเป็น char ติดตรง loop free อีกแล้ว - -*
ลองไล่ๆเองดูก็ไม่ถูกซักที - -*
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,j=0;
//int{i}{j}
int ***bug110=NULL;
bug110=(int ***)malloc(sizeof(int*)*4*5);
printf("&bug110=%d \n",(long)&bug110);
printf("bug110=%d \n",(long)bug110);
for (i=0;i<4;i++)
{
bug110{i}=(int **)malloc(sizeof(int)*4*5);
printf("&bug110{%d}=%d \n",i,(long)&bug110{i});
printf("bug110{%d}=%d \n",i,(long)bug110{i});
for(j=0;j<5;j++)
{
bug110{i}{j}=(int *)malloc(sizeof(int)*4*5);
*(bug110{i}{j})=(i*5)+j;
printf("&bug110{%d}{%d}=%d \n",i,j,(long)&bug110{i}{j});
printf("bug110{%d}{%d}=%d \n",i,j,(long)bug110{i}{j});
printf("*(bug110{%d}{%d})=%d \n\n",i,j,*(bug110{i}{j}));
}
}
printf("free \n");
for(i=0;i<4;i++)
{
printf("{%d}\n",i);
for(j=0;j<5;j++)
{
printf("{%d}{%d}\n",i,j);
free(bug110{i}{j});
bug110{i}{j}=NULL;
}
free(bug110{i});
bug110{i}=NULL;
}
free(bug110);
bug110=NULL;
printf("-------------------------------\n");
//char{i}{j}
char ***b100=NULL;
b100=(char ***)malloc(sizeof(char*)*4*5);
printf("&b100=%d \n",(long)&b100);
printf("b100=%d \n",(long)b100);
for (i=0;i<4;i++)
{
b100{i}=(char **)malloc(sizeof(char)*4*5);
printf("&b100{%d}=%d \n",i,(long)&b100);
printf("b100{%d}=%d \n",i,(long)b100);
for(j=0;j<5;j++)
{
b100{i}{j}=(char *)malloc(sizeof(char)*4*5);
if(j+1==5)
{
*(b100{i}{j})='\0';
}
else
{
*(b100{i}{j})=97+(i*5)+j;
}
printf("&b100{%d}{%d}=%d \n",i,j,(long)&b100{i}{j});
printf("b100{%d}{%d}=%d \n",i,j,(long)b100{i}{j});
printf("*(b100{%d}{%d})=%c \n\n",i,j,*(b100{i}{j}));
}
}
printf("free\n");
for(i=0;i<4;i++)
{
printf("{%d}\n",i);
for(j=0;j<5;j++)
{
printf("{%d}{%d}\n",i,j);
free(b100{i}{j});
b100=NULL;
}
free(b100{i});
b100{i}=NULL;
}
free(b100);
b100=NULL;
printf("-------------------------------\n");
return(0);
}
ปล.ขอขอบคุณทุกท่านที่มาช่วยตอบนะคับ _/\_