l'allocation de mémoire à l'aide de calloc et de libérer de la

gcc 4.4.4 c89

J'ai un programme que je suis en train de tester. J'ai créer un struct objet appelé nom_périphérique n', et allouer de la mémoire pour que je puisse remplir les éléments. Je les affiche, puis libérer la mémoire qui a été allouée.

Cependant, j'obtiens l'erreur suivante:

invalid operands to binary != (have struct Devices_names and void *’)

Qui est dans ma boucle for pour afficher les éléments de la structure. Cependant, je sens que je suis en train de tester pour un pointeur NULL.

Juste une autre question, est-il un problème avec le libre?

Merci beaucoup pour tous les conseils,

#include <stdio.h>
#include <stdlib.h>

static struct Devices_names {
#define MAX_NAME_LEN 80
    int id;
    char name[MAX_NAME_LEN];
} *devname;

static void g_create_device_names(size_t devices);
static void g_get_device_names();
static void destroy_devices();

int main(void)
{
#define DEVICES 5
    g_create_device_names(DEVICES);

    g_get_device_names();

    destroy_devices();

    return 0;
}

static void g_create_device_names(size_t devices)
{
    size_t i = 0;
    devname = calloc(devices, sizeof *devname);
    if(devname == NULL) {
        exit(0);
    }

    for(i = 0; i < devices; i++) {
        devname[i].id = i;
        sprintf(devname[i].name, "device: %d", i);
    }
}

static void g_get_device_names()
{
    size_t i = 0;

    for(i = 0; devname[i] != NULL; i++) { <-- ERROR HERE
        printf("Device id --- [ %d ]\n", devname[i].id);
        printf("Device name - [ %s ]\n", devname[i].name);
    }
}

static void destroy_devices()
{
    while(devname != NULL) {
        free(devname++);
    }
}

OriginalL'auteur ant2009 | 2010-11-30