Libchecker:XALLOCAZ

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/Функции/Работа с памятью/XALLOCAZ

Данный макрос — это обертка над функцией выделения памяти alloca. Дополнительно к выделению памяти макрос заполняет выделенную память нулями. Например, если необходимо выделить память под массив a типа double из n элементов, с использованием alloca фрагмент кода будет следующим:

a = (double*) alloca(n * sizeof(a[0]));
memset(a, 0, n * sizeof(a[0]));

а с использованием макроса XALLOCAZ следующим:

XALLOCAZ(a, n);

У макроса XALLOCAZ два параметра. Первый параметр — это переменная указательного типа, в которой будет сохранен адрес выделенного фрагмента памяти. Второй параметр — это количество элементов массива (обратите внимание, не размер массива в байтах, а именно количество элементов массива). И первый, и второй параметры используются несколько раз, поэтому выражения с побочными эффектами недопустимы.