我試圖運行下面的代碼:我只是幸運malloc返回了一個零填充緩衝區?
int main(){
char *ptr = (char*)malloc(sizeof(char)*20);
ptr[5] = 'W';
ptr[0] = 'H';
std::cout<<ptr<<std::endl;
return 0;
}
當我使用GCC 4.3.4,我得到「H」作爲輸出。由Kernighan的&裏奇這本書C程序設計語言說的malloc()返回未初始化的空間,在這種情況下,輸出應該已經有了一些明確的值。我的輸出結果是ptr [1]爲'\ 0'的巧合嗎?
[This](http://stackoverflow.com/questions/7421502/instead-of-just-using-free-and-having-the-pointer-pointing-some-new-block-how/7421564#7421564 )可能是一個很好的解讀。 –
根據定義,'sizeof(char)'總是'1'。 – fredoverflow