Articles of malloc

usando malloc para bloque de estructuras

Estoy tratando de asignar un bloque de memoria y almacenar una lista de estructuras sin usar múltiples mallocs para cada uno … esto es solo un ejemplo genérico, no tengo el código original con el que trabajé anteriormente, pero este es el idea general, pero mi problema era que estaba recibiendo daños en el montón […]

C pasa una matriz bidimensional de tamaño variable para funcionar

Estoy tratando de refactorizar mi código para hacerlo mejor / más legible, así que estoy tratando de cambiar una asignación de matriz variable 2-D de la siguiente manera // OLD CODE int **map; map = calloc(number, sizeof(int *)); if (!(map)) { free(map); return 1; } for (int i = 0; i = 0) { free(map[i]); […]

Doble puntero gratuito utilizando una función.

Así que he creado y asignado memoria para un puntero doble usando la siguiente función: void mallocDoubleArr(double ***arr, int size) { printf(“Here: %d”, size); int i, j; *arr = malloc(size * sizeof(double*)); for(i = 0; i < size; i++) { (*arr)[i]= malloc(size*sizeof(double)); for (j = 0; j < size; j++) { (*arr)[i][j] = 0; } […]

Desasignar memoria con free () no funciona

Aquí hay un pequeño progtwig que llena algunos arreglos e imprime su contenido en la pantalla: #include #include typedef struct{ double **plist; int plistSize; } ParticleList; void sendPar(int *n, int np){ // allocate memory for struct pl ParticleList pl; // allocate memory for ParticleList np times pl.plist = malloc(sizeof(ParticleList) * np); // allocate memory for […]

C – memoria compartida – matriz dinámica dentro de estructura compartida

Estoy tratando de compartir una estructura como esta ejemplo: typedef struct { int* a; int b; int c; } ex; Entre los procesos, el problema es que cuando inicializo ‘a’ con un malloc, se vuelve privado al montón de procesos que hacen esto (o al menos creo que esto es lo que sucede). ¿Hay alguna […]

¿Debo liberar memoria asignada en terminación anormal?

Mi progtwig (un navegador web en modo texto) está asignando memoria dinámicamente. Libero bloques innecesarios durante el tiempo de ejecución, por supuesto. Y hago todo gratis antes de la terminación normal, de modo que los verificadores de memory leaks no me den falsos positivos (y para ser flexibles en caso de que se necesiten refactorizaciones […]

¿Cómo puede malloc () causar un SIGSEGV?

Tengo un error extraño en mi progtwig, me parece que malloc () está causando un SIGSEGV, que en mi opinión no tiene ningún sentido. Estoy usando una biblioteca llamada simclist para listas dinámicas. Aquí hay una estructura que se hace referencia más adelante: typedef struct { int msgid; int status; void* udata; list_t queue; } […]

GUI para un depurador de GNU

Estoy bastante emocionado con el GNU Debugger y una GUI llamada Insight, ya que me ha ahorrado MUCHO tiempo. Por lo tanto, estoy publicando esta pregunta / respuesta para otros novatos como yo que tengo problemas con su código C en busca de una forma visual de ver qué está pasando. Estoy trabajando en Linux […]

¿Se puede determinar si una cadena es transitable en C?

Si yo digo: #include #include #include char *x; char *y; int main() { x = malloc(sizeof(“Hello, world!”)); strcpy(x, “Hello world!”); y = “Hello, world”; free(x); fprintf(stderr, “okay”); free(y); } Entonces, obviamente, el progtwig imprimirá “ok” seguido de muerte porque “el puntero que se liberó no fue asignado”, obviamente, porque la cadena era un literal de […]

Array bidimensional de estructuras en C: cómo declarar y usar

He estado tratando de obtener una idea muy simple para trabajar en C, pero ni siquiera puedo bajar la syntax. Este progtwig tomaría algunas entradas de la línea de comando y las usaría para decidir qué tamaño para hacer una matriz bidimensional de estructuras. Luego, en una situación de tipo de bucle for, me gustaría […]