История изменений
Исправление SZT, (текущая версия) :
А какие способы есть в крестах, которых нет в Си? Я могу и в C сделать массив из char известного размера и из него использовать память.
А еще в Си есть VLA, так что можно сделать что-то типа такого
bool malloc_used = false;
void *ptr;
size_t vla_sz = sz;
if(need_huge_allocation)
{
vla_sz = 0;
}
char vla[vla_sz];
if(need_huge_allocation)
{
malloc_used = true;
ptr = malloc(sz);
if(ptr == NULL)
{
//...
}
}
else
{
ptr = vla;
}
//...
if(malloc_used == true)
{
free(ptr);
}
Исправление SZT, :
А какие способы есть в крестах, которых нет в Си? Я могу и в C сделать массив из char известного размера и из него использовать память.
А еще в Си есть VLA, так что можно сделать что-то типа такого
bool malloc_used = false;
void *ptr;
size_t vla_sz = sz;
if(need_huge_allocation)
{
vla_sz = 0;
}
char vla[sz];
if(need_huge_allocation)
{
malloc_used = true;
ptr = malloc(sz);
if(ptr == NULL)
{
//...
}
}
else
{
ptr = vla;
}
//...
if(malloc_used == true)
{
free(ptr);
}
Исходная версия SZT, :
А какие способы есть в крестах, которых нет в Си? Я могу и в C сделать массив из char известного размера и из него использовать память.
А еще в Си есть VLA, так что можно сделать что-то типа такого
bool malloc_used = false;
void *ptr;
size_t vla_sz = sz;
if(need_huge_allocation)
{
vla_sz = 0;
}
char vla[sz];
if(need_huge_allocation)
{
malloc_used = true;
ptr = malloc(sz);
if(ptr == NULL)
{
//...
}
}
else
{
ptr = vla;
}
//...
if(malloc_used == true)
{
free(ptr);
}