還真的發現程式語言一些細緻的地方,一些我以前注意過,但是不大放在心上
現在竟然連C跟C++都"不同調",讓我想起以前一些錯誤的sizeof用法
一般人習慣用sizeof來求取陣列大小,但是這個也只是適用於靜態陣列,如果是動態配置就不行
比方說
#include
using namespace std;
int main(void){
int *a=new int[3];
int b[3];
cout
delete[] a;
return 0;
}
輸出應該是4,12
因為前面的sizeof取到的是指標大小,所以在32bits的OS裡面是4bytes沒有錯,這是一個常見的忽略