我有一個使用malloc指針的模擬二維數組,我想獲取該數組的大小,因爲sizeof()返回指針的大小。 我的代碼(ANSI C):使用malloc獲取模擬數組的大小
void main(){
int s1=10;
int s2=15;
int ** rack=(int**)malloc(s1*sizeof(int**));
for(int i=0; i<s1; i++) rack[i]=(int*)malloc(s2*sizeof(int*));
}
我想要的功能(可通過系統,可以自己做)這樣說:
size(rack) //returns 10
size(rack[0]) //returns 15
提前感謝! (欲瞭解更多信息,我使用GNU/Linux)
請注意,[指向指針數組的指針並不是真正的2D數組](https://stackoverflow.com/q/42094465/694733)。另外,ANSI C引用C的舊版過時版本;如果你在Linux上,很可能你可以升級到C11。 – user694733
一個好習慣就是不要在'malloc'中用'typeof'來處理'sizeof'的類型,但是指針應該指向'malloc(s1 * sizeof * rack)'的對象。同樣在C中,你不應該投下'malloc'和朋友的回報。 –
您在malloc中分配了錯誤的空間量 –