That result is more interesting.
We can use a pointer allocation as a param from the sublootin as a returnable value.
--- execution 001 ---
string[0]=|022B3C38|0|
string[1]=|022B3C39|0|
string[2]=|022B3C3A|0|
string[3]=|022B3C3B|0|
string[4]=|022B3C3C|-16|
string[5]=|022B3C3D|0|
string[6]=|022B3C3E|0|
string[7]=|022B3C3F|0|
string[8]=|022B3C40|0|
string[9]=|022B3C41|0|
string 03[0]=|022B3C50|76|
string 03[1]=|022B3C51|23|
string 03[2]=|022B3C52|85|
string 03[3]=|022B3C53|114|
string 03[4]=|022B3C54|0|
string 03[5]=|022B3C55|0|
string 03[6]=|022B3C56|0|
string 03[7]=|022B3C57|0|
string 03[8]=|022B3C58|1|
string 03[9]=|022B3C59|0|
string 03[10]=|022B3C5A|0|
string 03[11]=|022B3C5B|0|
string 03[12]=|022B3C5C|0|
string 03[13]=|022B3C5D|0|
string 03[14]=|022B3C5E|0|
string 03[15]=|022B3C5F|0|
string 01[0]=|022B3C50|0|
string 01[1]=|022B3C51|0|
string 01[2]=|022B3C52|0|
string 01[3]=|022B3C53|0|
string 01[4]=|022B3C54|-16|
string 01[5]=|022B3C55|0|
string 01[6]=|022B3C56|0|
string 01[7]=|022B3C57|0|
string 01[8]=|022B3C58|0|
string 01[9]=|022B3C59|0|
string 01[10]=|022B3C5A|0|
string 01[11]=|022B3C5B|0|
string 01[12]=|022B3C5C|0|
string 01[13]=|022B3C5D|0|
string 01[14]=|022B3C5E|0|
string 01[15]=|022B3C5F|0|
--- execution 001 ---
int vDisplayController_002::malloc_main () { char *string_001 = NULL; char *string_003 = NULL; int i; FILE *fp = NULL; printf("int main ( int argc, char** argv ) starts.\r\n"); fp = fopen ( (char*) "001-malloc_main-001.txt", "wb" ); // string_001 = (char*)char_string(10); for( i=0; i<10; i++ ) { fprintf(fp,"string[%d]=|%p|%d|\r\n", i, string_001+i, *(string_001+i)); } string_003 = (char*)mchar_string(string_001, 16); for( i=0; i<16; i++ ) { fprintf(fp,"string 03[%d]=|%p|%d|\r\n", i, string_003 + i, *(string_003+i)); } for( i=0; i<16; i++ ) { fprintf(fp,"string 01[%d]=|%p|%d|\r\n", i, string_003 + i, *(string_001 + i)); } fclose(fp); printf("int main ( int argc, char** argv ) ends.\r\n"); return 0; } ... char* vDisplayController_002::mchar_string (char* string_002, int num) { char *tmp, *w; printf("char* mchar_string (char* string_002, int num) starts.\r\n"); tmp = (char*) malloc ( num ); if ( tmp == NULL ) { printf("14: |%p|\r\n", tmp); exit(-1); } w = string_002; string_002 = tmp; free(w); printf("char* mchar_string (char* string_002, int num) ends.\r\n"); return string_002; }
willinglytranslate.blogspot.com