calloc()和realloc()编译问题

时间:2014-12-08 15:40:38

标签: c

我学习c并不完全理解一切,我从一本书中得到了这个示例代码。主题是calloc()和realloc()的用法。我使用的是Ubuntu 14.04和gcc编译器。我检查了代码中的语法,并且与书中的相同并没有犯任何错误。所以我认为问题在于如何编写代码以便编译器以它需要的方式理解它。为此,我没有经验来解决这个问题。如果需要,我有更多的错误输出。

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

void main(){
    double * memptr;
    memptr = (double *) calloc(100, sizeof(double));
    if (memptr == NULL){
        printf("\nNicht genuegend Speicherplatz!");
        exit(1);
    }
    printf("\nSpeicher fuer 100 double-Variable Ok!");
    memptr = (double*) realloc(memptr,125);
    if(memptr ==NULL){
        printf("\nNicht genuegend Speicherplatz!");
        exit(1);
    }
    printf("\nSpeicherplatz auf 125 Variable vergroessert!");
    free(memptr);
    printf("\nSpeicher wieder freigegeben!");
}

错误消息:

*bei84.c: In function ‘main’:
bei84.c:7:22: warning: incompatible implicit declaration of built-in function ‘calloc’
[enabled by default]

memptr = (double *) calloc(100, sizeof(double));
                  ^

bei84.c:13:21: warning: incompatible implicit declaration of built-in function ‘realloc’
  [enabled by default]
  memptr = (double*) realloc(memptr,*125);

1 个答案:

答案 0 :(得分:0)

一开始,说#include <malloc.h>,这可能会解决一些问题。此外,您可以在C代码行之间放置空格;编译器并不关心,它使阅读更加容易!

当您使用realloc时,您不需要(double *)memptr已经是double *,并且了解返回如何转换为double * 1}}。