AIX에서 제대로 작동하지만 Solaris에서 코어 덤프가 제대로 작동하는 코드가 있습니다. 가능한 한 단순화하려고했습니다. 이하 solaris의 함수에 전달 된 구조체에 대한 포인터에 액세스 할 때 코어 덤프가 발생했습니다.
함수custom_struct_1 my_struct1 = {
intValue1, intValue2, intValue3, func3
};
이 필드 아래
custom_struct_2 my_struct2 = {
intValue1, intValue2, &my_struct1
};
으로 첫 번째 포인터을 갖는 제 2 구조에 대한 포인터를 갖는 글로벌 structrue 것은 유동
인func1(){
custom_struct *my_dumping_struct;
memset(my_struct, 0, sizeof(my_struct);
func2(my_dumping_struct, &my_struct2);
}
func2(custom_struct *my_dumping_struct, custom_struct_2 *my_struct2){
custom_struct1 *my_cust1;
// Some conditions go here
my_cust1 = &my_struct2->custom_struct_1;
my_cust1->struct_func(my_dumping_struct);
}
func3(custom_struct *my_dumping_struct)
{
// Here when trying to access any field of the passed structure
// a core dump is occuring
if(my_dumping_struct->intValue1 == 0)
{
....
}
}
감사합니다. 나를 미치게하고있다. 제가
memset(&my_dumping_structre, 0, sizeof(my_dumping_struct))
를 이용하여 다른 기능 그것은 여전히 코어 덤프에 대한 참조를 전달 제에 대한 포인터없이 댐핑 구조를 형성 multipile 같은 것을 시도했다. 구조의
편집
정의는 다음과 같습니다 :
struct custom_struct {
int intValue1;
int intValue2;
};
struct custom_struct_1 {
int intValue1;
int intValue2;
int intValue3;
int (*struct_func)(custom_struct *my_struct);
};
struct custom_struct_2 {
int intValue1;
int intValue2;
struct custom_struct_1 *my_struct;
};
감사
도움이 듯, 난 당신이 게시 할 수있는 생각하지 않습니다 'custom_struct_1','custom_struct_2','custom_struct'의 정의? * 질문에 제발; ** ** 주석이 아닙니다 **. 여기에있는 동안, * 컴파일 *하는 코드는 좋은 손길이 될 것입니다. 쓰여진'func1()'은 두 개의 정의되지 않은 변수를 가지며 선언되지 않은 타입을 사용합니다. 'func2()'와'func3()'는별로 좋지 않습니다. [SSCCE] (http://www.sscce.org)는 매우 바람직합니다.우리에게 코드에 대해 "말하지"마십시오. 당신이 기대하고있는 것, 당신이 얻고있는 것, 그리고 당신이 추측 한 것은 잘못된 것입니다. – WhozCraig
당신이 옳다고 생각합니다. :) – wassim
@WhozCraig 유감스럽게도 전체 코드를 공유 할 수는 없지만 각기 다른 헤더 파일에 정의되어 있으며, 설명 된 것보다 훨씬 더 많은 요소. – wassim