Почему это stackover flow
происходит где я использую fflush
а также free
в моем коде.
Пожалуйста, помогите мне.
using namespace std;
struct abc{
int x;int y;
}abc;
int _tmain(int argc, _TCHAR* argv[])
{
struct abc *xyz = (struct abc *) malloc(sizeof(struct abc));
xyz->x = 5;
printf("%d\n", xyz->x);
//system("pause");
free(xyz);
// xyz = NULL;
fflush(stdout);
_tmain(NULL, NULL);
return 0;
}
Отредактированный код:
xyz:
struct abc *xyz = (struct abc *) malloc(sizeof(struct abc));
xyz->x = 5;
printf("%d\n", xyz->x);
//system("pause");
free(xyz);
xyz = NULL;
fflush(stdout);
goto xyz;
Вы безоговорочно звоните _tmain()
функция от вашего _tmain()
функция, вызывающая бесконечную рекурсию. Каждый вызов должен выделять место в стеке (которое никогда не освобождается), вызывая исключение StackOverflow. Взгляните, например, на Википедия слишком полно понимаю проблему.
Кроме того, называя main()
Функция из вашего собственного кода обычно не очень хорошая идея, так как она запрещена стандартом.
§3.6.1.3: Функция main не должна использоваться в программе.
Зачем вам это нужно?
Системе нужна память для ваших переменных в стеке, вы выделили переменные стека, которые занимают память при каждом рекурсивном вызове. Также требуется память для хранения указателя возврата при каждом рекурсивном вызове.