Отказ от ответственности: это для назначения, но назначение не требует, чтобы мы убрали утечки памяти. Я просто сохраняю анал.
Рассмотрим следующий метод:
//Prints the current user ID to the console.
void PrintUserId()
{
std::cout << "Current User Id: " << cuserid(0) << std::endl;
}
Документы для cuserid
состояния:
Если строка не является нулевым указателем, это должен быть массив, который может содержать как минимум символы L_cuserid; строка возвращается в этом массиве. В противном случае возвращается указатель на строку в статической области.
Но, по крайней мере, в моей системе рассматриваемая память не выделяется статически (или, по крайней мере, есть ошибки ...):
(Valgrind Output)
==4488== 160 (40 direct, 120 indirect) bytes in 1 blocks are definitely lost in loss record 11 of 11
==4488== at 0x4025BD3: malloc (vg_replace_malloc.c:236)
==4488== by 0x4247A9C: nss_parse_service_list (nsswitch.c:622)
==4488== by 0x4248216: __nss_database_lookup (nsswitch.c:164)
==4488== by 0x402DEAB: ???
==4488== by 0x402EB6C: ???
==4488== by 0x41FE41C: getpwuid_r@@GLIBC_2.1.2 (getXXbyYY_r.c:253)
==4488== by 0x41A2785: cuserid (cuserid.c:38)
==4488== by 0x80495A3: PrintUserId() (in /home/bro4/Assignment1.bin)
==4488== by 0x8049A11: ParentProcess() (in /home/bro4/Assignment1.bin)
==4488== by 0x8049B53: main (in /home/bro4/Assignment1.bin)
Я просто застрял на этом?