структура calloc в C - PullRequest
       36

структура calloc в C

1 голос
/ 22 мая 2011

Я пытаюсь инициализировать указатель на структуру с 0,0 значениями там.Посмотрите на следующую ситуацию:

typedef struct 
{
    float a;
    float b;
    float c;
} structA;

structA *ptr = calloc(100000, sizeof(structA));

Я хочу, чтобы все значения в * ptr были structA с начальными значениями {0.0, 0.0, 0.0}, но сейчас это не так.Многие из индексов * ptr отображаются правильно, но некоторые индексы появляются со странными значениями (например, {0.0, 0.0, 10241256124.0}).

Если я пытаюсь использовать malloc, происходит то же самое.

Что мне делать?

1 Ответ

4 голосов
/ 22 мая 2011

Вы делаете что-то не так ... Я никогда не использовал цель-c, поэтому я вставил приведенный ниже код в ideone.com , и он сработал, как и ожидалось ... (распечатка завершена,не удалось, потому что) все значения были нулевыми.Я предполагаю, что вы не проверяете должным образом, так как весьма вероятно, что в вашем компиляторе есть ошибка ...

#include <malloc.h>

typedef struct 
{
    float a;
        float b;
        float c;
} structA;



int main() {
    int count = 100000;
    int i;
    structA *ptr = calloc(count, sizeof(structA));
    if(ptr) {
        for(i=0;i<count;i++) {
            if(ptr[i].a || ptr[i].b || ptr[i].c) {
                printf("fail\n");
            }
        }
        printf("done\n");
    }
    return 0;
}
...