2011-10-25 26 views
0
FILE *fp; 

short *originalUnPacked; 
short *unPacked; 

int fileSize; 

fp = fopen(FILENAME, "r"); 
fseek (fp , 0 , SEEK_END); 
fileSize = ftell (fp); 
rewind (fp); 

originalUnPacked = (short*) malloc (sizeof(char)*fileSize); 
unPacked = (short*) malloc (sizeof(char)*fileSize); 

printf ("The UnPacked : %d ", unPacked); 
printf ("The Original UnPacked : %d ", originalUnPacked); 

//上記のprintステートメントは2つの異なる値を出力しますが、私の質問はなぜですか?同じファイル、同じファイルサイズだが2つの異なるメモリサイズ、なぜですか?

+0

'malloc'は、割り当てられたメモリブロックのサイズではなく、新たに割り当てられたメモリへのポインタを返します(失敗した場合はNULLを返します)。 –

答えて

0

私はprintfにshort *を渡すべきではないと思います。それは単純な短い、右を期待していますか?

*を印刷すると、サイズが取得されず、そのメモリの場所のアドレスが取得されます。