摘要:先贴出自己写的测试代码:int* M2(int* p){ return p+1;}int M(int a, char b){ int* pp = M2(&a); return *pp;}int _tmain(int argc, _TCHAR* argv[]){ int e=0; int d = M(3,'c'); getchar(); return 0;}然后来一层一层的分析:调用函数Main008B1030 push ebp // 将ebp的值压入栈 008B1031 mov ebp,esp // 将esp的值赋值给ebp008B1033 sub ...
阅读全文
03 2012 档案
摘要:Segment类Segment成员变量 long long m_index;记录该segment的索引号。 int* volatile m_state;状态数组,标识所对应的元素节点的状态,默认值为0,如果该元素节点添加了值,则标记为1。 T* volatile m_array;队列元素存储空间的指针。 Segment* volatile m_next;指向下一个segment的指针。 volatile long m_high;标识在当前segment,元素最后添加的索引值,初始值为-1,如果该segment被填满了,则该值为SEGMENT_SIZE – 1。 volatile long m_
阅读全文
摘要:ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。ConcurrentQueue<T>数据结构下图是ConcurrentQueue<T>数据结构的示意图:ConcurrentQueue<T>队列由若干Segment动态构成,每个Segment是一块连续的内存Buffer,大小固定为SEGMENT_SIZE。ConcurrentQueue<T>私有成员变量ConcurrentQueue<T&
阅读全文