나는 2 차원 문자 배열을 할당하기 위해 노력하고있어이 코드를 사용하여, 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]에 사용하는 매개 변수는 [here] (http://www.cplusplus.com/reference/cstdlib/calloc/) 및 [there] (http : //)에서 볼 수있는 것과 반대 순서입니다. msdn.microsoft.com/en-us/library/3f8w183e.aspx); 나는 그것이 잘못된 행동을 일으킬 것인지 실제로 알지는 못한다. – ThoAppelsin
@ThoAppelsin 'calloc'에 대한 매개 변수의 순서는 내가 아는 모든 플랫폼과 관련이 없습니다. – cmaster