Hi,

I tested with the following code and it is working fine for me.

Code:
typedef struct MONSTER
{
	var INIT_M;
}MONSTER;

typedef struct HERO
{
	var INIT;
}HERO;

//initialisierung über enmies_create() und hero_create()


MONSTER* create_enemies()
{
	MONSTER* enemy = (MONSTER*)sys_malloc(sizeof(MONSTER));
	enemy->INIT_M = 14;
	return enemy;
}

int hero_order[3] = {0,1,2};
int cur_hr = 0;

HERO* create_hero()
{
	HERO* hero = (HERO*)sys_malloc(sizeof(HERO));
	switch(hero_order[cur_hr])//hero_order enthält die werte 0,1,2
	{
	case 0:
		hero->INIT = 16;
		break;
	case 1:
		hero->INIT = 12;
		break;
	case 2:
		hero->INIT = 15;
		break;
	}
   cur_hr++;
	return hero;
}

//direkte übergabe des pointer an andere HERO pointer

void create_battle_startup()
{
	
	HERO* hero0 = create_hero();
	HERO* hero1 = create_hero();
	HERO* hero2 = create_hero();
	MONSTER* monster0 = create_enemies();
	MONSTER* monster1 = create_enemies();
	MONSTER* monster2 = create_enemies();

       
   var i = hero0.INIT; //hier entsteht das Problem
   int j = hero0.INIT;
   printf("i = %d, j = %d", (int)i, j);
   
   // Free heroes
   sys_free(hero0);
   sys_free(hero1);
   sys_free(hero2);
   
   // Free monstaers
   sys_free(monster0);
   sys_free(monster1);
   sys_free(monster2);
}



Best regards.