结构体中使用容器(vector,list,set...)
2011-05-12 21:39
369 查看
今天在NS2中修改AODV代码时,想在AODV中加入一个黑洞攻击检查表RQ_Table,
当使用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分配空间的呢??????
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分配空间的呢??????
相关文章推荐
- STL中的容器使用比较(string vector list deque set map)
- stl容器区别(内存布局和使用场合): vector list deque set map
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- STL容器 list、vector、map、set 使用的陷阱
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++ STL容器的使用方法(vector、queue、list、set、map)
- C++ STL容器的学习使用(vector、queue、list、set、map)
- 在STL中基本容器有: string、vector、list、deque、set、map
- c++ 标准库的各种容器(vector,deque,map,set,unordered_map,unordered_set,list)的性能考虑
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- C++ map;vector;list;queue;stack;set对比使用
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- Java中Vector、List、Set集合、Iterator迭代器的使用
- java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
- stl容器的区别:vector list deque set map-底层实现
- stl容器区别: vector list deque set map-底层实现
- STL 基本容器 : string、vector、list、deque、set、map 的区别
- STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map