多次创建新结构

时间:2014-02-24 21:16:58

标签: c++

我正在努力寻找一种用新数据填充缓冲区的好方法。我有一个线程从声卡产生数据,我想通过一个名为Rawcontainer的共享对象与其他线程共享这些数据。容器中有一个互斥锁和一个环形缓冲区,但是当我尝试填充缓冲区时,我注意到我填充缓冲区的对象都具有相同的内存地址,使得整个缓冲区无用。

void useBuffer(){
    //Create a new "OBject" (struct) each time this methos is called??
    SoundData *p = new SoundData();
    //Copy the data of the sound into the the struct data field
    memcpy(p->data, soundCopy, 2048*sizeof(double) );
    //Put the struct into the buffer and forget about it?
    Rawcontainer->writeRaw(p);
    //This should print a differnt adress each time the method is called?, but it dosent!
    std::cout << "Adressse fra Streamhandler:  " << &p <<'\n';
}

2 个答案:

答案 0 :(得分:1)

您应该只打印p,而不是&p,因为p已经包含新结构的地址。您正在做的是打印p变量的地址,每次调用该函数时都很容易相同。

答案 1 :(得分:0)

使用

std::cout << "Adressse fra Streamhandler:  " << p <<'\n';

而不是

std::cout << "Adressse fra Streamhandler:  " << &p <<'\n';

p已经是一个指针。你不需要在这里取其地址。