没有<stdlib.h>的自由指针

时间:2016-10-06 00:13:41

标签: c pointers

我想知道如何在不使用任何头文件<stdlib.h>的情况下释放指针。

我使用的平台(VX RTOS)我无法使用<stdlib.h>,因此收到错误消息implicit declaration of function 'free' [-Werror=implicit-function-declaration]

我的代码中有几个包含指针的函数。而我在寒冷中几次打电话给他们。所以我相信我应该释放指针。我想知道如何释放它们。我已经在我的代码中放了一个函数。

int complex1(double a1,double b1,double c1,double d1,int op,double *e1, double *f1){
double c2d2;
    //a=real(complex no1);b=imag(complex no1);c=real(complex no2);d=imag(complex no2);c2d2=sqrt(c1*c1+d1*d1)
    /*op=type of operation
        op=1: addition
        op=2: substraction
        op=3: multiplication
        op=4: division  
        op=5: absolute value 
    */
    //Resultant compex number is in the form of e1+1j*f1
    //Comlex number addition
    if (op==1){
        *e1=a1+c1;
        *f1=b1+d1;
    } 
    //Comlex number substraction
    if (op==2){
        *e1=a1-c1;
        *f1=b1-d1;
    }   
    //Comlex number multiplication
    if (op==3){
        *e1=a1*c1-b1*d1;
        *f1=b1*c1+a1*d1;
    }   
    //Comlex number division
    if (op==4){
        c2d2=c1*c1+d1*d1;
        *e1=0;*f1=0;
        if (c2d2 != 0){
            *e1=(a1*c1+b1*d1)/(c2d2);
            *f1=(b1*c1-a1*d1)/(c2d2); 
        }
    }       
    //free(*e1);free(*f1);

    return 0;
}

3 个答案:

答案 0 :(得分:1)

如果您不能包含头文件,但是您要链接到C标准库实现,那么您只需声明原型并且警告就会消失。

在文件顶部声明函数free(3)

void free(void *ptr); 

答案 1 :(得分:1)

如果由于某些可疑原因你不能包含<stdlib.h>,你可以在使用它之前声明函数free

void free(void *); 

如果您的系统在其C库中没有名为free的符号,则会出现链接时错误。如果确实如此,那么人们只能希望它是标准free()函数的符合实现。

答案 2 :(得分:1)

  

我想知道如何在不使用<stdlib.h>之类的任何头文件的情况下释放指针。

虽然你可能能够宣布

void free(void* ptr); 

我强烈建议不要使用该路由,尤其是在使用Visual Studio时。 使用#include <stdlib.h>除非您有充分理由不这样做。