_C_Quickpool_Debug ()- Modificar características del gestor de memoria de agrupación rápida

Formato

#include <stdlib.h>
_C_Quickpool_Debug_T _C_Quickpool_Debug(_C_Quickpool_Debug_T *newval);

Nivel de idioma

Ampliada

De hebra segura

Descripción

La función _C_Quickpool_Debug() modifica las características del gestor de memoria de agrupación rápida. Las variables de entorno también se pueden utilizar para configurar este soporte (sección de referencia Variables de entorno).

Los parámetros para _C_Quickpool_Debug() son los siguientes:

Newval
Puntero a una estructura _C_Quickpool_Debug_T . La estructura contiene los campos siguientes:
marcadores
Un valor entero sin signo que indica las características que se van a modificar. El campo de distintivos puede contener los valores siguientes (que se pueden utilizar en cualquier combinación):
_C_INIT_MALLOC
Inicializa todo el almacenamiento asignado a un valor especificado.
_C_INIT_FREE
Inicializa todo el almacenamiento liberado en un valor especificado.
_C_COLLECT_STATS
Recopila estadísticas sobre el gestor de memoria de agrupación rápida para su uso con la función _C_Quickpool_Report() .
val_ubicación_incorrecta
Un valor de carácter sin signo de 1 byte que se utiliza para inicializar cada byte de memoria asignada. Este campo sólo se utiliza cuando se especifica el distintivo _C_INIT_MALLOC .
val_libre
Un valor de carácter sin signo de 1 byte que se utiliza para inicializar cada byte de memoria liberada. Este campo sólo se utiliza cuando se especifica el distintivo _C_INIT_FREE .

Si el valor de newval es NULL, se devuelve una estructura que contiene las características actuales del gestor de memoria de agrupación rápida y no se modifica ninguna de las características del gestor de memoria de agrupación rápida.

Valor de retorno

El valor de retorno es una estructura que contiene los valores _C_Quickpool_Debug() antes de que se realicen los cambios solicitados por la llamada de función actual. Este valor se puede utilizar en una llamada posterior para restaurar los valores _C_Quickpool_Debug() a un estado anterior.

Ejemplo

El ejemplo siguiente utiliza _C_Quickpool_Debug() con los distintivos _C_INIT_MALLOC y _C_INIT_FREE para inicializar la memoria en las funciones malloc y free .
#include <stdlib.h>
#include <stdio.h>
int main(void) {
  char *p;
  char *mtest = "AAAAAAAAAA";
  char *ftest = "BBBBBBBBBB";
  unsigned int cell_sizes[2]       = { 16, 64 };
  unsigned int cells_per_extent[2] = { 16, 16 };
  _C_Quickpool_Debug_T  dbgVals = { _C_INIT_MALLOC | _C_INIT_FREE, 'A', 'B' };

  if (_C_Quickpool_Init(2, cell_sizes, cells_per_extent)) {
    printf("Error initializing Quick Pool memory manager.\n");
    return -1;
  }

  _C_Quickpool_Debug(&dbgVals);

  if ((p = malloc(10)) == NULL) {
    printf("Error during malloc.\n");
    return -2;
  }
  if (memcmp(p, mtest, 10)) {
    printf("malloc test failed\n");
  }
  free(p);
  if (memcmp(p, ftest, 10)) {
    printf("free test failed\n");
  }
  printf("Test successful!\n");
  return 0;
}
/*****************Output should be similar to:*****************
Test successful!
*******************************************************************/

Información relacionada