我有以下代碼:查找尺寸指針指向
int* d = (int*) malloc(100 * sizeof(int));
cout<<"size of d which is pointer is: " << sizeof(d)<<endl;
我知道的sizeof輸出4作爲d是一個PTR。但是,我怎樣才能找到整個數組的大小sizeof
我有以下代碼:查找尺寸指針指向
int* d = (int*) malloc(100 * sizeof(int));
cout<<"size of d which is pointer is: " << sizeof(d)<<endl;
我知道的sizeof輸出4作爲d是一個PTR。但是,我怎樣才能找到整個數組的大小sizeof
你不能 - sizeof
是編譯時操作,因此不動態。
由於您使用的是C++,因此請使用std::vector
。否則,創建一個結構來存儲指針和數組的大小。代之以傳遞。
指針爲您提供了存儲數據的地方,這就是爲什麼您無法從該信息獲取數據的原因。
它類似於知道我的房子有多大是知道我的地址(沒有先驗知識或類似谷歌地圖使用工具)
直接答。沒有你不能,但你可以試試這個:
int x[]={1,2,3,4};
int *ptr=x;
decltype(sizeof(*ptr)) size=0;
while(*ptr<5){
size =size+sizeof(*ptr);
ptr++;
}
cout<<"Size is : "<<size;
輸出:
Size is:16
你可以說你已經使用sizeof
瞭解整個數組的大小 - 你有它在你原來的malloc
呼叫 - 100 * sizeof(int)
。雖然malloc
機器必須知道內部與指針相關聯的內存量(它需要用於相應的free
調用),並且顯然某些實現提供了返回此信息的函數,據我所知,沒有獨立於實現的可移植性沒有自己處理它的方式。
簡單 - 你不能。 – 2013-02-10 09:00:53
也許重複http://stackoverflow.com/a/492410/1758762 – duDE 2013-02-10 09:03:29
另一個相關的和有趣的問題是這一個:http://stackoverflow.com/questions/2034450/size-of-dynamically-allocated-array – 2013-02-10 09:04:59