您的位置:首页 > 其它

结构体中使用容器(vector,list,set...)

2011-05-12 21:39 351 查看
今天在NS2中修改AODV代码时,想在AODV中加入一个黑洞攻击检查表RQ_Table,

struct RQ_Table
{
int32_t src;
int32_t dst;
u_int32_t src_seqno;
int max_hop_count;
set <int32_t> broadcast_node;
double time;
struct RQ_Table *prev;
struct RQ_Table *next;
};
strcut RQtableList
{
int32_t howmany;
RQtableList *list;
RQtableList *last;
};


当使用malloc申请内存空间的时候,发现malloc()是不给set 分配空间的,执行时会出现Segmentation fault的错误,到网上查了一下,终于找到问题的所在了。

因为使用malloc()的时候,没有执行set的构造函数,因而没有给set分配任何空间。因此应该改用new.只要使用new就OK了!

即把 sq = (RQ_Table*)malloc(sizeof(RQ_Table))

改成 sq = new RQ_Table;

简单明了,但是为什么NS2中的C++都是使用malloc分配空间的呢??????
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐