구조에서 유연한 배열을 사용하고 있습니다. 그래서 나는 그 구조체에 할당 된 메모리를 내 자신의 코드 중 일부로 변경하려고합니다. 기본적으로 new_structname() 및 structname_variable_set() 함수를 변경하려고합니다. 여기 C 구조의 메모리 할당을 위해 SWIG에서 생성 한 기본 코드를 변경하는 방법은 무엇입니까?
typedef struct vector{
int x;
char y;
int arr[0];
} vector;
는 SWIG는 원샷 특별하게 구조의 이러한 유형을 처리하지 않을 것이다
calloc(1,sizeof(struct vector))
호출하여 메모리를 할당하는 함수를 생성
new_vector()
. 그래서 우리는 유연한 배열을위한 메모리를 할당하기 위해 생성 된 swig 생성 된 new_vector()를 수정해야합니다. 이것을 처리 할 수있는 방법이 있습니까?
어떻게 변경해야하는지 자세히 설명해 주실 수 있습니까? 동일한 의미론을 가진 대체 이름 지정 함수로 전환하는 것은 매우 쉽지만, 좀 더 복잡한 작업을 원한다면 더 깊은 변경을해야합니다. – Flexo
new_structname() 함수에서 메모리는 다음과 같이 할당됩니다. var = calloc (1, sizeof (struct name)). 이것은 유연한 배열을 떠나는 구조체의 크기를 고려할 것입니다. 그래서 내가하고 싶은 var = calloc (1, sizeof (struct name) + size_of_flexi_arr); 여기서 size_of_flexi_arr은 사용자가 지정합니다. –
함수의 이름을 변경하고 싶지 않습니다. 함수 내부의 코드를 변경하고 싶습니다. –