繁体   English   中英

为什么Xcode无法识别此.cpp文件中的free()和malloc()?

[英]Why doesn't Xcode recognize free() and malloc() in this .cpp file?

我的项目中有许多可以正常工作的.cpp文件。 但这会激怒Xcode或编译器。

它不能识别free()malloc()但是它也是C。这可能是什么错误?

自由

的malloc

标头ssdpmessage.h看起来像这样:

#ifndef _SSDPMESSAGE_H
#define _SSDPMESSAGE_H

#include "ssdptools.h"
#include <vector>
#include <arpa/inet.h>
#include "ssdpdb.h"

class SSDPMessage{
public:
    SSDPMessage();
    virtual ~SSDPMessage();
    //What type of message can we handle 
    virtual SSDP_TYPE GetType()=0;
    //Get the message dignature implemented in this class
    virtual std::vector<SSDP_HTTP_HEADER*> GetHeaderSignature();
    //Can this class parse the message with this signature ?
    virtual u8 CanProcess(std::vector<SSDP_HTTP_HEADER*> msgheaders);
    //Process the message, return value: 
    //0 : processed
    //1 : not for me, search for another to process
    //<0 : message was for me but there is an error
    virtual int Process(struct sockaddr* sender, std::vector<SSDP_HTTP_HEADER*> msgheaders)=0;
    //ReInit all members
    virtual void ReInit()=0;
    virtual SSDPDB* GetDB();
    virtual void SetDB(SSDPDB* db);
private:
    std::vector<SSDP_HTTP_HEADER*> mHeaderSignature;
protected:
    int AddSignatureHeader(char* fieldname, char* fieldvalue);
    SSDPDB *mDB;
private:
    SSDPMessage(const SSDPMessage &src);
    SSDPMessage& operator= (const SSDPMessage &src);            
};


#endif //_SSDPMESSAGE_H

ssdpmessage.cpp的include和受影响的代码如下所示:

#include "ssdpmessage.h"

SSDPMessage::SSDPMessage():mDB(NULL){
}

SSDPMessage::~SSDPMessage(){
    std::vector<SSDP_HTTP_HEADER*>::iterator it;
    for(it=mHeaderSignature.begin(); it<mHeaderSignature.end(); it++){
        free(*it);
    }
    mHeaderSignature.clear();
}



int SSDPMessage::AddSignatureHeader(char* fieldname, char* fieldvalue){
    SSDP_HTTP_HEADER *thisHeader = (SSDP_HTTP_HEADER*)malloc(sizeof(SSDP_HTTP_HEADER));
    thisHeader->fieldname = (u8*)fieldname;
    thisHeader->fieldnamelen = strlen(fieldname);
    thisHeader->fieldvalue = (u8*)fieldvalue;
    thisHeader->fieldvaluelen = strlen(fieldvalue);
    mHeaderSignature.push_back(thisHeader);         
    return mHeaderSignature.size();
}

这是来自upnpx库的代码。 在库的演示项目中它可以正常工作。

malloc要求您包含cstdlib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM