因爲我不太瞭解我遇到的整體問題,所以調試變得非常困難。在打印字符數組時遇到問題?
char *o_key_pad = (char*)malloc(SHA256_DIGEST_LENGTH*sizeof(char));
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++){
o_key_pad[i] = 'a';
}
printf("%s\n", o_key_pad);
char *i_key_pad = (char*)malloc(SHA256_DIGEST_LENGTH*sizeof(char));
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++){
i_key_pad[i] = 'b';
}
printf("%s\n", o_key_pad);
printf("%s\n", i_key_pad);
而我得到的輸出:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
爲什麼陣列「o_key_pad」得到擴展到包括任何我把陣「i_key_pad」,似乎是某種內存問題?
注意:我明白,它可以做得更有效,但爲了更清楚地表明我的觀點,我已經這樣做了。
你不需要(也不應該)施放'malloc'的返回值。請參閱[this](http://stackoverflow.com/a/605858/1701799)。 – RastaJedi
'sizeof char == 1','sizeof'返回值的大小......字符。 –