本文整理汇总了C++中MALLOCARRAY函数的典型用法代码示例。如果您正苦于以下问题:C++ MALLOCARRAY函数的具体用法?C++ MALLOCARRAY怎么用?C++ MALLOCARRAY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MALLOCARRAY函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: srf_img_init
static void
srf_img_init(struct srf_img * const imgP,
uint16_t const width,
uint16_t const height) {
struct srf_img_header * const headerP = &imgP->header;
struct srf_img_alpha * const alphaP = &imgP->alpha;
struct srf_img_data * const dataP = &imgP->data;
headerP->_ints[0] = 0;
headerP->_ints[1] = 16;
headerP->_ints[2] = 0;
headerP->height = height;
headerP->width = width;
headerP->_bytes[0] = 16;
headerP->_bytes[1] = 8;
headerP->line_len = width * 2;
headerP->zeros = 0;
alphaP->type = 11;
alphaP->data_len = height * width;
MALLOCARRAY(alphaP->data, alphaP->data_len);
if (!alphaP->data)
pm_error("Could not allocate buffer for %u bytes of alpha",
alphaP->data_len);
dataP->type = 1;
dataP->data_len = height * width * 2;
MALLOCARRAY(dataP->data, dataP->data_len / 2);
if (!dataP->data)
pm_error("Could not allocation buffer for %u units of data",
dataP->data_len);
}
示例2: openFiles
static void
openFiles(struct CmdlineInfo const cmdline,
unsigned int * const fileCtP,
struct pam ** const imgPamP,
const char *** const namesP) {
unsigned int fileCt;
struct pam * imgPam;
const char ** names;
fileCt = cmdline.nFiles > 0 ? cmdline.nFiles : 1;
MALLOCARRAY(imgPam, fileCt);
MALLOCARRAY(names, fileCt);
if (!imgPam || !names)
pm_error("out of memory");
if (cmdline.nFiles > 0) {
unsigned int i;
for (i = 0; i < cmdline.nFiles; ++i) {
imgPam[i].file = pm_openr(cmdline.inFileName[i]);
names[i] = strdup(cmdline.inFileName[i]);
}
} else {
imgPam[0].file = stdin;
names[0] = strdup("stdin");
}
*fileCtP = fileCt;
*imgPamP = imgPam;
*namesP = names;
}
示例3: findpack
static void
findpack(struct pam * const imgs,
unsigned int const imgCt,
Coord ** const coordsP,
unsigned int const quality,
unsigned int const qfactor) {
Coord * coords; /* malloc'ed array */
unsigned int minarea;
unsigned int i;
unsigned int rdiv;
unsigned int cdiv;
Rectangle * current; /* malloc'ed array */
unsigned int z;
Coord c;
MALLOCARRAY(coords, imgCt);
if (!coords)
pm_error("Out of memory allocating %u-element coords array", imgCt);
z = UINT_MAX; /* initial value */
c.x = 0; c.y = 0; /* initial value */
if (quality > 1) {
unsigned int realMinarea;
for (realMinarea = i = 0; i < imgCt; ++i)
realMinarea += imgs[i].height * imgs[i].width;
minarea = realMinarea * qfactor / 100;
} else
minarea = UINT_MAX - 1;
/* It's relatively easy to show that, if all the images
* are multiples of a particular size, then a best
* packing will always align the images on a grid of
* that size.
*
* This speeds computation immensely.
*/
for (rdiv = imgs[0].height, i = 1; i < imgCt; ++i)
rdiv = gcf(imgs[i].height, rdiv);
for (cdiv = imgs[0].width, i = 1; i < imgCt; ++i)
cdiv = gcf(imgs[i].width, cdiv);
MALLOCARRAY(current, imgCt);
for (i = 0; i < imgCt; ++i) {
current[i].size.x = imgs[i].width;
current[i].size.y = imgs[i].height;
}
recursefindpack(current, c, coords, minarea, &z, 0, imgCt, cdiv, rdiv,
quality, qfactor);
free(current);
*coordsP = coords;
}
示例4: newRGBMapData
static void
newRGBMapData(RGBMap * const rgbP,
unsigned int const size) {
rgbP->used = 0;
rgbP->size = size;
rgbP->compressed = FALSE;
MALLOCARRAY(rgbP->red, size);
MALLOCARRAY(rgbP->grn, size);
MALLOCARRAY(rgbP->blu, size);
if (rgbP->red == NULL || rgbP->grn == NULL || rgbP->blu == NULL)
pm_error("Out of memory allocating %u pixels", size);
}
示例5: findpack
static void
findpack(struct pam *imgs, int n, coord *coords)
{
int minarea;
int i;
int rdiv;
int cdiv;
int minx = -1;
int miny = -1;
coord *current;
coord *set;
int z = INT_MAX;
coord c = { 0, 0 };
if (quality > 1)
{
for (minarea = i = 0; i < n; ++i)
minarea += imgs[i].height * imgs[i].width,
minx = imax(minx, imgs[i].width),
miny = imax(miny, imgs[i].height);
minarea = minarea * qfactor / 100;
}
else
{
minarea = INT_MAX - 1;
}
/* It's relatively easy to show that, if all the images
* are multiples of a particular size, then a best
* packing will always align the images on a grid of
* that size.
*
* This speeds computation immensely.
*/
for (rdiv = imgs[0].height, i = 1; i < n; ++i)
rdiv = gcd(imgs[i].height, rdiv);
for (cdiv = imgs[0].width, i = 1; i < n; ++i)
cdiv = gcd(imgs[i].width, cdiv);
MALLOCARRAY(current, n);
MALLOCARRAY(set, n);
for (i = 0; i < n; ++i)
set[i].x = imgs[i].width,
set[i].y = imgs[i].height;
recursefindpack(current, c, set, coords, minarea, &z, 0, n, cdiv, rdiv);
}
示例6: ppmd_read_font
void
ppmd_read_font(FILE * const ifP,
const struct ppmd_font ** const fontPP) {
unsigned int relativeCodePoint;
struct ppmd_glyph * glyphTable;
struct ppmd_font * fontP;
MALLOCVAR(fontP);
if (fontP == NULL)
pm_error("Insufficient memory for font header");
readFontHeader(ifP, &fontP->header);
MALLOCARRAY(glyphTable, fontP->header.characterCount);
if (glyphTable == NULL)
pm_error("Insufficient memory to store %u characters",
fontP->header.characterCount);
for (relativeCodePoint = 0;
relativeCodePoint < fontP->header.characterCount;
++relativeCodePoint) {
readCharacter(ifP, &glyphTable[relativeCodePoint]);
}
fontP->glyphTable = glyphTable;
*fontPP = fontP;
}
示例7: analyzeDistribution
static void
analyzeDistribution(struct pam * const inpamP,
bool const verbose,
const unsigned int ** const histogramP,
struct range * const rangeP) {
/*----------------------------------------------------------------------------
Find the distribution of the sample values -- minimum, maximum, and
how many of each value -- in input image *inpamP, whose file is
positioned to the raster.
Return the minimum and maximum as *rangeP and the frequency
distribution as *histogramP, an array such that histogram[i] is the
number of pixels that have sample value i.
Assume the file is positioned to the raster upon entry and leave
it positioned at the same place.
-----------------------------------------------------------------------------*/
unsigned int row;
tuple * inrow;
tuplen * inrown;
unsigned int * histogram; /* malloced array */
unsigned int i;
pm_filepos rasterPos; /* Position in input file of the raster */
pm_tell2(inpamP->file, &rasterPos, sizeof(rasterPos));
inrow = pnm_allocpamrow(inpamP);
inrown = pnm_allocpamrown(inpamP);
MALLOCARRAY(histogram, inpamP->maxval+1);
if (histogram == NULL)
pm_error("Unable to allocate space for %lu-entry histogram",
inpamP->maxval+1);
/* Initialize histogram -- zero occurrences of everything */
for (i = 0; i <= inpamP->maxval; ++i)
histogram[i] = 0;
initRange(rangeP);
for (row = 0; row < inpamP->height; ++row) {
unsigned int col;
pnm_readpamrow(inpamP, inrow);
pnm_normalizeRow(inpamP, inrow, NULL, inrown);
for (col = 0; col < inpamP->width; ++col) {
++histogram[inrow[col][0]];
addToRange(rangeP, inrown[col][0]);
}
}
*histogramP = histogram;
pnm_freepamrow(inrow);
pnm_freepamrown(inrown);
pm_seek2(inpamP->file, &rasterPos, sizeof(rasterPos));
if (verbose)
pm_message("Pixel values range from %f to %f",
rangeP->min, rangeP->max);
}
示例8: pamd_fill_create
struct fillobj *
pamd_fill_create(void) {
fillobj * fillObjP;
struct fillState * stateP;
MALLOCVAR(fillObjP);
if (fillObjP == NULL)
pm_error("out of memory allocating a fillhandle");
MALLOCVAR(stateP);
if (stateP == NULL)
pm_error("out of memory allocating a fillhandle");
stateP->n = 0;
stateP->size = SOME;
MALLOCARRAY(stateP->coords, stateP->size);
if (stateP->coords == NULL)
pm_error("out of memory allocating a fillhandle");
stateP->curedge = 0;
fillObjP->stateP = stateP;
/* Turn off line clipping. */
/* UGGH! We must eliminate this global variable */
oldclip = pamd_setlineclip(0);
return fillObjP;
}
示例9: newRGBImage
Image *
newRGBImage(unsigned int const width,
unsigned int const height,
unsigned int const depth) {
unsigned int const pixlen = depth > 0 ? (depth + 7) / 8 : 1;
/* Special case for "zero" depth image, which is sometimes
interpreted as "one color"
*/
unsigned int const numcolors = depthToColors(depth);
Image * imageP;
MALLOCVAR_NOFAIL(imageP);
imageP->type = IRGB;
newRGBMapData(&imageP->rgb, numcolors);
imageP->width = width;
imageP->height = height;
imageP->depth = depth;
imageP->pixlen = pixlen;
if (UINT_MAX / width / height < pixlen)
pm_error("Image dimensions %u x %u x %u are too big to compute.",
width, height, pixlen);
MALLOCARRAY(imageP->data, width * height * pixlen);
if (imageP->data == NULL)
pm_error("Unable to allocate %u x %u x %u raster array",
width, height, pixlen);
return imageP;
}
示例10: newBitImage
Image *
newBitImage(unsigned int const width,
unsigned int const height) {
unsigned int const linelen = (width + 7) / 8;
Image * imageP;
MALLOCVAR_NOFAIL(imageP);
imageP->type = IBITMAP;
newRGBMapData(&imageP->rgb, 2);
imageP->rgb.red[0] = imageP->rgb.grn[0] = imageP->rgb.blu[0] = 65535;
imageP->rgb.red[1] = imageP->rgb.grn[1] = imageP->rgb.blu[1] = 0;
imageP->rgb.used = 2;
imageP->width = width;
imageP->height = height;
imageP->depth = 1;
if (UINT_MAX / linelen < height)
pm_error("Image dimensions too big to compute: %u x %u",
linelen, height);
MALLOCARRAY(imageP->data, linelen * height);
if (imageP->data == NULL)
pm_error("Out of memory allocating array of %u x %u", linelen, height);
return imageP;
}
示例11: newTrueImage
Image *
newTrueImage(unsigned int const width,
unsigned int const height) {
unsigned int const pixlen = 3;
Image * imageP;
MALLOCVAR_NOFAIL(imageP);
imageP->type = ITRUE;
imageP->rgb.used = 0;
imageP->rgb.size = 0;
imageP->width = width;
imageP->height = height;
imageP->depth = 24;
imageP->pixlen = 3;
if (UINT_MAX / width / height < pixlen)
pm_error("Image dimensions %u x %u x %u are too big to compute.",
width, height, pixlen);
MALLOCARRAY(imageP->data, width * height * pixlen);
if (imageP->data == NULL)
pm_error("Unable to allocate %u x %u x %u raster array",
width, height, pixlen);
return imageP;
}
示例12: createLongOptsArray
static struct optionx *
createLongOptsArray(struct optionDesc * const optionDescArray,
unsigned int const numOptions) {
struct optionx * longopts;
MALLOCARRAY(longopts, numOptions+1);
if (longopts != NULL) {
unsigned int i;
for (i = 0; i < numOptions; ++i) {
longopts[i].name = optionDescArray[i].name;
/* If the option takes a value, we say it is optional even
though it never is. That's because if we say it is
mandatory, getopt_long_only() pretends it doesn't even
recognize the option if the user doesn't give a value.
We prefer to generate a meaningful error message when
the user omits a required option value.
*/
longopts[i].has_arg =
optionDescArray[i].type == OPTTYPE_FLAG ?
no_argument : optional_argument;
longopts[i].flag = NULL;
longopts[i].val = i;
}
longopts[numOptions].name = 0;
longopts[numOptions].has_arg = 0;
longopts[numOptions].flag = 0;
longopts[numOptions].val = 0;
}
return longopts;
}
示例13: ppm_writeppmrowraw
static void
ppm_writeppmrowraw(FILE * const fileP,
const pixel * const pixelrow,
unsigned int const cols,
pixval const maxval ) {
unsigned int const bytesPerSample = maxval < 256 ? 1 : 2;
unsigned int const bytesPerRow = cols * 3 * bytesPerSample;
unsigned char * rowBuffer;
ssize_t rc;
MALLOCARRAY(rowBuffer, bytesPerRow);
if (rowBuffer == NULL)
pm_error("Unable to allocate memory for row buffer "
"for %u columns", cols);
if (maxval < 256)
format1bpsRow(pixelrow, cols, rowBuffer);
else
format2bpsRow(pixelrow, cols, rowBuffer);
rc = fwrite(rowBuffer, 1, bytesPerRow, fileP);
if (rc < 0)
pm_error("Error writing row. fwrite() errno=%d (%s)",
errno, strerror(errno));
else if (rc != bytesPerRow)
pm_error("Error writing row. Short write of %u bytes "
"instead of %u", rc, bytesPerRow);
free(rowBuffer);
}
示例14: xmlrpc_authcookie_set
void
xmlrpc_authcookie_set(xmlrpc_env *const envP,
const char *const username,
const char *const password) {
char *unencoded;
xmlrpc_mem_block *token;
XMLRPC_ASSERT_ENV_OK(envP);
XMLRPC_ASSERT_PTR_OK(username);
XMLRPC_ASSERT_PTR_OK(password);
/* Create unencoded string/hash. */
MALLOCARRAY(unencoded, (strlen(username) + strlen(password) + 1 + 1));
sprintf(unencoded, "%s:%s", username, password);
/* Create encoded string. */
token = xmlrpc_base64_encode_without_newlines(
envP, (unsigned char *) unencoded, strlen(unencoded));
if (!envP->fault_occurred) {
/* Set HTTP_COOKIE_AUTH to the character representation of the
encoded string.
*/
#if HAVE_SETENV
setenv("HTTP_COOKIE_AUTH",
XMLRPC_MEMBLOCK_CONTENTS(char, token),
1);
#endif
xmlrpc_mem_block_free(token);
}
示例15: at_bitmap_init
at_bitmap_type
at_bitmap_init(unsigned char * area,
unsigned short width,
unsigned short height,
unsigned int planes) {
at_bitmap_type bitmap;
if (area)
bitmap.bitmap = area;
else {
if (width * height == 0)
bitmap.bitmap = NULL;
else {
MALLOCARRAY(bitmap.bitmap, width * height * planes);
if (bitmap.bitmap == NULL)
pm_error("Unable to allocate %u x %u x %u bitmap array",
width, height, planes);
bzero(bitmap.bitmap,
width * height * planes * sizeof(unsigned char));
}
}
bitmap.width = width;
bitmap.height = height;
bitmap.np = planes;
return bitmap;
}