나는 내 코드를 지나치게 단순화시키지 않았 으면 좋겠지 만, 기본적으로 컨테이너에서 요소의 존재를 확인하고 포인터를 리턴하는 것이 기본이다.포인터에 액세스하는 데 문제가 있습니까?
나는
typedef struct INHs{
int ID;
} INHs;
typedef struct sub_container{
INHs** list_inh;
int nb_list;
} sub_container;
typedef struct container {
sub_container* cont;
int nb_elem;
} container;
과 같은 구조를 가지고 다음 내 주요 방법 나는 할당 된 컨테이너를 (내가 단순 위해 그것을 밖으로두고, 주어진 ID 것, 그리고 지금 내가 반복하지 않을 것이다 내 목표 INHs 구조를 찾으려면 하위 컨테이너).
INHs** test_INH = NULL;
INHs** return_val = NULL;
int ID = 10;
container* cont; //allocated on all memory
for (uint n=0; !test_INH && n<container_nb_elem; n++){
return_val = find_ptr(&cont[n], ID, &test_INH);
}
INHs** find_ptr(sub_container* sub_cont, int ID, INHs*** test){
INHs** res = NULL;
for (uint i=0; !res && i<sub_cont->nb_list; i++){
if (sub_cont->list_inh[i].ID == ID) {
(*test) = &(sub_cont->list_inh[i]);
res = &(sub_cont->list_inh[i]);
}
return res;
}
내가 내 요소에 반환 값과 함수의 매개 변수로 다른 두를 필요가 없습니다 알고 있지만이 내가 시도했던 두 가지 버전이 있습니다. 내가 뭘 잘못하고 있는지 모르지만 valgrind 충돌은 "test_INH"또는 "result_val"이 초기화되지 않았 음을 알려주지 만 null로 설정합니다.
누군가 내가 여기에없는 것을 보았습니까?
구조를 할당 한 방법을 확인하는 것이 적절하다고 생각합니다 –
정확한 오류를 표시 할 수 있습니다. – nbro
주 : C는 _methods_를 지원하지 않습니다. 그리고 디버거를 사용해야합니다. – Olaf