Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ malloc/free用于调整阵列大小_C++_C_Malloc_Free - Fatal编程技术网

C++ malloc/free用于调整阵列大小

C++ malloc/free用于调整阵列大小,c++,c,malloc,free,C++,C,Malloc,Free,Queue.cpp #include "Queue.h" #include "Log.h" void Queue::resize(int n) { Log("[Resize] Req: %d ", n); DATA_TYPE *temp = (DATA_TYPE *) malloc(sizeof(DATA_TYPE) * n); int i, j; for(i = f, j = 0; i < r; i++, j++) *(temp + j) = *(buffer

Queue.cpp

#include "Queue.h"
#include "Log.h"
void Queue::resize(int n)
{
  Log("[Resize] Req: %d ", n);
  DATA_TYPE *temp = (DATA_TYPE *) malloc(sizeof(DATA_TYPE) * n);
  int i, j;
  for(i = f, j = 0; i < r; i++, j++)
    *(temp + j) =  *(buffer + i);

  Log("Buf: %p ", buffer);
  free(buffer);
  buffer = temp;
  _buf_len = n;
  r = r - f;
  f = 0;
  Log("Buf new: %p \n", buffer);
}

void Queue::enqueue(DATA_TYPE c)
{ 
  if(N == _buf_len)
    resize(N * 2);

  buffer[r++] = c;
  N++; 
  Log("[Enqueue] D: %d N: %d BUF_LEN: %d \n", c, N, _buf_len);
}

DATA_TYPE Queue::dequeue(void)
{
   DATA_TYPE c = buffer[f++]; 
   N--;
   if(N > 0 && N == _buf_len / 4)
     N / 2 == 0 ? resize(1) : resize( N / 2);

   Log("[Dequeue] D: %d N: %d BUF_LEN: %d \n", c, N, _buf_len);
   return c;     
}

DATA_TYPE Queue::peek(void)
{
   return buffer[f]; 
}

bool Queue::isempty(void)
{
  return r == f;
}

int Queue::size(void)
{
  return N;
}

Queue::Queue(int n)
{
  buffer = (DATA_TYPE *) malloc(sizeof(DATA_TYPE) * n);
  f = r = 0;
  N = 0;
  _buf_len = n; 
}

Queue::Queue()
{
  buffer = (DATA_TYPE *) malloc(sizeof(DATA_TYPE));
  f = r = 0;
  N = 0;
  _buf_len = 1; 
} 


Queue::~Queue()
{
  free(buffer);
} 
Log.cpp

#include "Log.h"

void Log(const char *frmt, ...)
{
  #ifdef DEBUG
  va_list ap;
  va_start(ap, frmt);
  vprintf(frmt, ap);
  va_end(ap);
  #endif
}
main.cpp

#include "Queue.h"

#include "stdio.h"
#include "ctype.h"
#include "string.h"

int main(int argc, char *argv[])
{
  Queue queue;
  ++argv;
  //--argc;
  while(--argc > 0)
  {
    if(strcmp(*argv, "-") != NULL)
      queue.enqueue(atoi(*argv));
    else 
       if(!queue.isempty())
         queue.dequeue();//printf("%d\n", queue.dequeue()); 
     ++argv;    
  }

  printf("\nItems left on queue: %d\n", queue.size());

  return 0;
}
上面提到的代码在使用

./a.out 12 23 34 56 11 22 33 44 55 66 77 88 - - - 34 56 - - - 123 67 56 78 - - 45 - 78 - 23 - 1256 - - 4


[Enqueue] D: 12 N: 1 BUF_LEN: 10 <br>
[Enqueue] D: 23 N: 2 BUF_LEN: 10 <br>
[Enqueue] D: 34 N: 3 BUF_LEN: 10 <br>
[Enqueue] D: 56 N: 4 BUF_LEN: 10 <br>
[Enqueue] D: 11 N: 5 BUF_LEN: 10 <br>
[Enqueue] D: 22 N: 6 BUF_LEN: 10 <br>
[Enqueue] D: 33 N: 7 BUF_LEN: 10 <br>
[Enqueue] D: 44 N: 8 BUF_LEN: 10 <br>
[Enqueue] D: 55 N: 9 BUF_LEN: 10 <br>
[Enqueue] D: 66 N: 10 BUF_LEN: 10 <br>
[Resize] Req: 20 Buf: 0xb7f010 Buf new: 0xb7f030  <br>
[Enqueue] D: 77 N: 11 BUF_LEN: 20 <br>
[Enqueue] D: 88 N: 12 BUF_LEN: 20 <br>
[Dequeue] D: 12 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 23 N: 10 BUF_LEN: 20 <br>
[Dequeue] D: 34 N: 9 BUF_LEN: 20 <br>
[Enqueue] D: 34 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 56 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 56 N: 10 BUF_LEN: 20 <br>
[Dequeue] D: 11 N: 9 BUF_LEN: 20 <br>
[Dequeue] D: 22 N: 8 BUF_LEN: 20 <br>
[Enqueue] D: 123 N: 9 BUF_LEN: 20 <br>
[Enqueue] D: 67 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 56 N: 11 BUF_LEN: 20 <br>
[Enqueue] D: 78 N: 12 BUF_LEN: 20 <br>
[Dequeue] D: 97 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 0 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 45 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 12 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 78 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 23 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 23 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 77 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 1256 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 88 N: 10 BUF_LEN: 20 <br>
[Dequeue] D: 34 N: 9 BUF_LEN: 20 <br>
[Enqueue] D: 4 N: 10 BUF_LEN: 20 <br>

Items left on queue: 10
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0000000000b7f030 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7e626)[0x7fc65d098626]
./a.out[0x400bac]
./a.out[0x400c88]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7fc65d03b76d]
./a.out[0x4006c9]
======= Memory map: ========
00400000-00402000 r-xp 00000000 08:06 1969214                            /home/mohit/learnc/algoritms/a.out
00601000-00602000 r--p 00001000 08:06 1969214                            /home/mohit/learnc/algoritms/a.out
00602000-00603000 rw-p 00002000 08:06 1969214                            /home/mohit/learnc/algoritms/a.out
00b7f000-00ba0000 rw-p 00000000 00:00 0                                  [heap]
7fc65cd20000-7fc65ce19000 r-xp 00000000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65ce19000-7fc65d018000 ---p 000f9000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65d018000-7fc65d019000 r--p 000f8000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65d019000-7fc65d01a000 rw-p 000f9000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65d01a000-7fc65d1cd000 r-xp 00000000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d1cd000-7fc65d3cc000 ---p 001b3000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d3cc000-7fc65d3d0000 r--p 001b2000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d3d0000-7fc65d3d2000 rw-p 001b6000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d3d2000-7fc65d3d7000 rw-p 00000000 00:00 0 
7fc65d3d7000-7fc65d3ec000 r-xp 00000000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d3ec000-7fc65d5eb000 ---p 00015000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d5eb000-7fc65d5ec000 r--p 00014000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d5ec000-7fc65d5ed000 rw-p 00015000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d5ed000-7fc65d6cf000 r-xp 00000000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d6cf000-7fc65d8ce000 ---p 000e2000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d8ce000-7fc65d8d6000 r--p 000e1000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d8d6000-7fc65d8d8000 rw-p 000e9000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d8d8000-7fc65d8ed000 rw-p 00000000 00:00 0 
7fc65d8ed000-7fc65d90f000 r-xp 00000000 08:06 2756114                    /lib/x86_64-linux-gnu/ld-2.15.so
7fc65dae6000-7fc65daeb000 rw-p 00000000 00:00 0 
7fc65db0b000-7fc65db0f000 rw-p 00000000 00:00 0 
7fc65db0f000-7fc65db10000 r--p 00022000 08:06 2756114                    /lib/x86_64-linux-gnu/ld-2.15.so
7fc65db10000-7fc65db12000 rw-p 00023000 08:06 2756114                    /lib/x86_64-linux-gnu/ld-2.15.so
7fff2987b000-7fff2989c000 rw-p 00000000 00:00 0                          [stack]
7fff299b0000-7fff299b1000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Aborted
/a.out 12 23 34 56 11 22 33 44 55 66 77 88----34 56----123 67 56 78--45-78-23-1256--4
[Enqueue]D:12 N:1 BUF_LEN:10
[Enqueue]D:23 N:2 BUF_LEN:10
[Enqueue]D:34 N:3 BUF_LEN:10
[Enqueue]D:56 N:4 BUF_LEN:10
[Enqueue]D:11 N:5 BUF_LEN:10
[Enqueue]D:22 N:6 BUF_LEN:10
[Enqueue]D:33 N:7 BUF_LEN:10
[Enqueue]D:44 N:8 BUF_LEN:10
[Enqueue]D:55 N:9 BUF_LEN:10
[Enqueue]D:66 N:10 BUF_LEN:10
[调整大小]请求:20 Buf:0xb7f010 Buf新:0xb7f030
[Enqueue]D:77 N:11 BUF_LEN:20
[Enqueue]D:88 N:12 BUF_LEN:20
[Dequeue]D:12 N:11 BUF_LEN:20
[Dequeue]D:23 N:10 BUF_LEN:20
[Dequeue]D:34 N:9 BUF_LEN:20
[Enqueue]D:34 N:10 BUF_LEN:20
[Enqueue]D:56 N:11 BUF_LEN:20
[Dequeue]D:56 N:10 BUF_LEN:20
[Dequeue]D:11 N:9 BUF_LEN:20
[Dequeue]D:22 N:8 BUF_LEN:20
[Enqueue]D:123 N:9 BUF_LEN:20
[Enqueue]D:67 N:10 BUF_LEN:20
[Enqueue]D:56 N:11 BUF_LEN:20
[Enqueue]D:78 N:12 BUF_LEN:20
[Dequeue]D:97 N:11 BUF_LEN:20
[Dequeue]D:0 N:10 BUF_LEN:20
[Enqueue]D:45 N:11 BUF_LEN:20
[Dequeue]D:12 N:10 BUF_LEN:20
[Enqueue]D:78 N:11 BUF_LEN:20
[Dequeue]D:23 N:10 BUF_LEN:20
[Enqueue]D:23 N:11 BUF_LEN:20
[Dequeue]D:77 N:10 BUF_LEN:20
[Enqueue]D:1256 N:11 BUF_LEN:20
[Dequeue]D:88 N:10 BUF_LEN:20
[Dequeue]D:34 N:9 BUF_LEN:20
[Enqueue]D:4 N:10 BUF_LEN:20
排队的物品:10件 ***glibc检测到***./a.out:free():无效的下一个大小(fast):0x0000000000b7f030*** =========回溯:========= /lib/x86_64-linux-gnu/libc.so.6(+0x7e626)[0x7fc65d098626] /a.out[0x400bac] /a.out[0x400c88] /lib/x86_64-linux-gnu/libc.so.6(libc_start_main+0xed)[0x7fc65d03b76d] /a.out[0x4006c9] =======内存映射:======== 00400000-00402000 r-xp 00000000 08:06 1969214/home/mohit/learnc/algoritms/a.out 00601000-00602000 r--p 000010008:06 1969214/home/mohit/learnc/algoritms/a.out 00602000-00603000 rw-p 000020008:06 1969214/home/mohit/learnc/algoritms/a.out 00b7f000-00ba0000 rw-p 00000000:00[堆] 7fc65cd20000-7fc65ce19000 r-xp 00000000 08:06 2756166/lib/x86_64-linux-gnu/libm-2.15.so 7fc65ce19000-7fc65d018000---p 000f9000 08:06 2756166/lib/x86_64-linux-gnu/libm-2.15.so 7fc65d018000-7fc65d019000 r--p 000f8000 08:06 2756166/lib/x86_64-linux-gnu/libm-2.15.so 7fc65d019000-7fc65d01a000 rw-p 000f9000 08:06 2756166/lib/x86_64-linux-gnu/libm-2.15.so 7fc65d01a000-7fc65d1cd000 r-xp 00000000 08:06 2756134/lib/x86_64-linux-gnu/libc-2.15.so 7fc65d1cd000-7fc65d3cc000---p 001b3000 08:06 2756134/lib/x86_64-linux-gnu/libc-2.15.so 7fc65d3cc000-7fc65d3d0000 r--p 001b2000 08:06 2756134/lib/x86_64-linux-gnu/libc-2.15.so 7fc65d3d0000-7fc65d3d2000 rw-p 001b6000 08:06 2756134/lib/x86_64-linux-gnu/libc-2.15.so 7fc65d3d2000-7fc65d3d7000 rw-p 00000000:00 7fc65d3d7000-7fc65d3ec000 r-xp 00000000 08:06 2756155/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc65d3ec000-7fc65d5eb000---p 00015000 08:06 2756155/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc65d5eb000-7fc65d5ec000 r--p 00014000 08:06 2756155/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc65d5ec000-7fc65d5ed000 rw-p 000150008:06 2756155/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc65d5ed000-7fc65d6cf000 r-xp 00000000 08:06 3678116/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 7fc65d6cf000-7fc65d8ce000---p 000e2000 08:06 3678116/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 7fc65d8ce000-7fc65d8d6000 r--p 000e1000 08:06 3678116/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 7fc65d8d6000-7fc65d8d8000 rw-p 000e9000 08:06 3678116/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 7fc65d8d8000-7fc65d8ed000 rw-p 00000000:00 7fc65d8ed000-7fc65d90f000 r-xp 00000000 08:06 2756114/lib/x86_64-linux-gnu/ld-2.15.so 7fc65dae6000-7fc65daeb000 rw-p 00000000:00 7fc65db0b000-7fc65db0f000 rw-p 00000000:00 7fc65db0f000-7fc65db10000 r--p 00022000 08:06 2756114/lib/x86_64-linux-gnu/ld-2.15.so 7fc65db10000-7fc65db12000 rw-p 00023000 08:06 2756114/lib/x86_64-linux-gnu/ld-2.15.so 7fff2987b000-7fff2989c000 rw-p 00000000:00 0[堆栈] 7fff299b0000-7fff299b1000 r-xp 00000000:00 0[vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000:00 0[vsyscall] 流产
问题:为什么在免费调用
~Queue()
时出现此错误(缓冲区)


我编辑了原来的问题“删除缓冲区而不是自由(缓冲区)”

您的错误源于这样一个事实:您将对
malloc
的调用与对
delete
的调用混合在一起

解决方案:你用
malloc
分配的所有东西,你用
free
解除分配。用
new
创建的所有内容都用
delete
销毁。如果混搭,就会出现未定义的行为,正如您在这里看到的,这无疑意味着bug和错误

请尝试以下方法:

free(buffer);
我的问题解决了。 这是一个逻辑错误。使用Valgrind,我找到了根本原因。 问题:函数enqueue()在(N==\u buf\u len)期间出现逻辑错误,我需要再添加一个条件(N==\u buf\u len | | r==\u buf\u len)。
e、 g.当Buf_len=8(32字节的malloc)时,r=8,n=5,如果再次调用了enqueue,我尝试插入
./a.out 12 23 34 56 11 22 33 44 55 66 77 88 - - - 34 56 - - - 123 67 56 78 - - 45 - 78 - 23 - 1256 - - 4


[Enqueue] D: 12 N: 1 BUF_LEN: 10 <br>
[Enqueue] D: 23 N: 2 BUF_LEN: 10 <br>
[Enqueue] D: 34 N: 3 BUF_LEN: 10 <br>
[Enqueue] D: 56 N: 4 BUF_LEN: 10 <br>
[Enqueue] D: 11 N: 5 BUF_LEN: 10 <br>
[Enqueue] D: 22 N: 6 BUF_LEN: 10 <br>
[Enqueue] D: 33 N: 7 BUF_LEN: 10 <br>
[Enqueue] D: 44 N: 8 BUF_LEN: 10 <br>
[Enqueue] D: 55 N: 9 BUF_LEN: 10 <br>
[Enqueue] D: 66 N: 10 BUF_LEN: 10 <br>
[Resize] Req: 20 Buf: 0xb7f010 Buf new: 0xb7f030  <br>
[Enqueue] D: 77 N: 11 BUF_LEN: 20 <br>
[Enqueue] D: 88 N: 12 BUF_LEN: 20 <br>
[Dequeue] D: 12 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 23 N: 10 BUF_LEN: 20 <br>
[Dequeue] D: 34 N: 9 BUF_LEN: 20 <br>
[Enqueue] D: 34 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 56 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 56 N: 10 BUF_LEN: 20 <br>
[Dequeue] D: 11 N: 9 BUF_LEN: 20 <br>
[Dequeue] D: 22 N: 8 BUF_LEN: 20 <br>
[Enqueue] D: 123 N: 9 BUF_LEN: 20 <br>
[Enqueue] D: 67 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 56 N: 11 BUF_LEN: 20 <br>
[Enqueue] D: 78 N: 12 BUF_LEN: 20 <br>
[Dequeue] D: 97 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 0 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 45 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 12 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 78 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 23 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 23 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 77 N: 10 BUF_LEN: 20 <br>
[Enqueue] D: 1256 N: 11 BUF_LEN: 20 <br>
[Dequeue] D: 88 N: 10 BUF_LEN: 20 <br>
[Dequeue] D: 34 N: 9 BUF_LEN: 20 <br>
[Enqueue] D: 4 N: 10 BUF_LEN: 20 <br>

Items left on queue: 10
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0000000000b7f030 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7e626)[0x7fc65d098626]
./a.out[0x400bac]
./a.out[0x400c88]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7fc65d03b76d]
./a.out[0x4006c9]
======= Memory map: ========
00400000-00402000 r-xp 00000000 08:06 1969214                            /home/mohit/learnc/algoritms/a.out
00601000-00602000 r--p 00001000 08:06 1969214                            /home/mohit/learnc/algoritms/a.out
00602000-00603000 rw-p 00002000 08:06 1969214                            /home/mohit/learnc/algoritms/a.out
00b7f000-00ba0000 rw-p 00000000 00:00 0                                  [heap]
7fc65cd20000-7fc65ce19000 r-xp 00000000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65ce19000-7fc65d018000 ---p 000f9000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65d018000-7fc65d019000 r--p 000f8000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65d019000-7fc65d01a000 rw-p 000f9000 08:06 2756166                    /lib/x86_64-linux-gnu/libm-2.15.so
7fc65d01a000-7fc65d1cd000 r-xp 00000000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d1cd000-7fc65d3cc000 ---p 001b3000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d3cc000-7fc65d3d0000 r--p 001b2000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d3d0000-7fc65d3d2000 rw-p 001b6000 08:06 2756134                    /lib/x86_64-linux-gnu/libc-2.15.so
7fc65d3d2000-7fc65d3d7000 rw-p 00000000 00:00 0 
7fc65d3d7000-7fc65d3ec000 r-xp 00000000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d3ec000-7fc65d5eb000 ---p 00015000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d5eb000-7fc65d5ec000 r--p 00014000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d5ec000-7fc65d5ed000 rw-p 00015000 08:06 2756155                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fc65d5ed000-7fc65d6cf000 r-xp 00000000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d6cf000-7fc65d8ce000 ---p 000e2000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d8ce000-7fc65d8d6000 r--p 000e1000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d8d6000-7fc65d8d8000 rw-p 000e9000 08:06 3678116                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7fc65d8d8000-7fc65d8ed000 rw-p 00000000 00:00 0 
7fc65d8ed000-7fc65d90f000 r-xp 00000000 08:06 2756114                    /lib/x86_64-linux-gnu/ld-2.15.so
7fc65dae6000-7fc65daeb000 rw-p 00000000 00:00 0 
7fc65db0b000-7fc65db0f000 rw-p 00000000 00:00 0 
7fc65db0f000-7fc65db10000 r--p 00022000 08:06 2756114                    /lib/x86_64-linux-gnu/ld-2.15.so
7fc65db10000-7fc65db12000 rw-p 00023000 08:06 2756114                    /lib/x86_64-linux-gnu/ld-2.15.so
7fff2987b000-7fff2989c000 rw-p 00000000 00:00 0                          [stack]
7fff299b0000-7fff299b1000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Aborted
free(buffer);

void Queue::enqueue(DATA_TYPE c)
{ 
  if(N == 0)
    resize(1);
  else
    if(N == _buf_len || r == _buf_len)
      resize(N * 2);
  buffer[r++] = c;
  N++; 
  Log("[Enqueue] D: %d N: %d BUF_LEN: %d R: %d F: %d BUFFER: %p\n", c, N, _buf_len, r, f, buffer);
}

DATA_TYPE Queue::dequeue(void) { DATA_TYPE c = buffer[f++]; N--; if(N > 0 && N == _buf_len / 4) _buf_len / 2 == 0 ? resize(1) : resize( _buf_len / 2); Log("[Dequeue] D: %d N: %d BUF_LEN: %d R: %d F: %d BUFFER: %p\n", c, N, _buf_len, r, f, buffer); return c; }