我試圖分配一個二維字符數組像ary[i][j]
使用此代碼來訪問:c:動態分配2d char數組時出現問題?
#define stringmaxlen 20
void do_alloc(char ***vals, int valscount){
*vals = (char**) calloc(sizeof(char**), valscount);
int i = 0;
for (; i<valscount; i++)
*vals[i] = (char*) calloc(sizeof(char*), stringmaxlen);
}
int main(){
//......
char** ary;
do_alloc(&ary, 10);
strcpy(ary[0], "test");
//......
}
不幸的是,這個地方引起溢出,並計劃在執行中的錯誤,我得到了一些參考這裏用於動態分配:http://staff.science.nus.edu.sg/~phywjs/CZ1102/lecture20/sld014.htm。
我想知道這裏有什麼問題以及如何解決問題,謝謝。
您使用'calloc'的參數是相反的順序,從[這裏](http://www.cplusplus.com/reference/cstdlib/calloc/)和[there](http:// msdn.microsoft.com/en-us/library/3f8w183e.aspx);雖然我真的不知道這是否會導致錯誤的行爲。 – ThoAppelsin
@ThoAppelsin在我知道的任何平臺上,參數到'calloc'的順序都是無關緊要的。 – cmaster