Вы возвращаете указатель на структуру, выделенную в стеке, в C, что очень неправильно .
Указатель, возвращаемый из newTestStruct
, по существу висящий , и попытка доступа к любым данным через него может привести к сбоям или, что еще хуже.
Убедитесь, что данные выделены на куча, если вы хотите вернуть указатель на него, что-то вроде:
TestStruct* newTestStruct() {
printf("[C] Creating TestStruct...\n");
TestStruct* testPtr = (TestStruct*)malloc(sizeof(TestStruct));
testPtr->test_int = 10;
if (testPtr == NULL) {
printf("[C] TestStruct is NULL.\n");
}
fflush(stdout);
return testPtr;
}
Кстати, на любом полу-современном C компиляторе вы получите предупреждение для вашего C код, что-то вроде warning: function returns address of local variable [-Wreturn-local-addr]