void tapp_final(TApplication *p)
{
	if (p->gCapsQ)
		tcaps_final(&(p->gCaps));

	UTIL_FREE(p->gExecShellArgv);
}
void tvterm_final(struct TVterm* p)
{
	close_skip_agent(&skip_agent_context);

	ioctl(0, KDSETMODE, KD_TEXT);
	tpen_final(&(p->pen));
	if(p->savedPen) {
		tpen_final(p->savedPen);
		free(p->savedPen);
		p->savedPen = NULL;
	}
	if(p->savedPenSL) {
		tpen_final(p->savedPenSL);
		free(p->savedPenSL);
		p->savedPenSL = NULL;
	}
	UTIL_FREE(p->text);
	UTIL_FREE(p->attr);
	UTIL_FREE(p->flag);
}
void operator delete(void *p) {
#ifdef UTIL_DUMP_OPERATOR_DELETE
	if (p != NULL) {
		char8_t buf[512];
		util::detail::LocalString str(buf, sizeof(buf));

		util::detail::StackTraceStringHandler handler(str, 3, true);
		util::StackTraceUtils::getStackTrace(handler);
		str.tryAppend("\n");

		std::cerr << str.tryGet();
	}
#endif 

	UTIL_FREE(p);
}