vector 代码编译成功,但是运行出错。该怎么解决

vector 代码编译成功,但是运行出错。
运行时,windows直接提示程序已停止工作,麻烦帮我看下哪里出问题了。

#include <vector>
using namespace std;
typedef struct cycledata
{
unsigned int key;
int delay;
}CYCLEDATA;
vector<CYCLEDATA> p;
void CreateTestData()
{

CYCLEDATA q[2]={0xffeeddcc,1000,0xaabbccdd,2000};
p.push_back(q[0]);
p.push_back(q[1]);

}
vector<unsigned char>* Outdata2Byte(vector<CYCLEDATA>& p)
{
unsigned char* buff=NULL,*temp;
vector<CYCLEDATA>::iterator iter;
vector<unsigned char>* outbuff=new vector<unsigned char>;
vector<unsigned char>::iterator iter1;
int len=p.size()*8;
int i=0,count=0;
buff=new unsigned char(len);
temp=buff;

for(iter=p.begin();iter!=p.end();iter++)  
    {        
*buff++=(iter->key&0xff000000)>>24;
*buff++=(iter->key&0x00ff0000)>>16;
*buff++=(iter->key&0x0000ff00)>>8;
*buff++=iter->key&0xff;

*buff++=(iter->delay&0xff000000)>>24;
*buff++=(iter->delay&0x00ff0000)>>16;
*buff++=(iter->delay&0x0000ff00)>>8;
*buff++=iter->delay&0xff;

    } 
for(i=0;i<len;i++)
{
outbuff->push_back(temp[i]);
}

return outbuff;
}

vector<unsigned char>* GetTestData(/*vector<CYCLEDATA> &p*/)
{
CreateTestData();
return Outdata2Byte(p);
}

int main()
{
vector<unsigned char>* p=GetTestData();
return 0;
}

------解决方案--------------------
buff=new unsigned char(len);

buff=new unsigned char[len];
感觉楼主是这个意思
------解决方案--------------------
buff=new unsigned char(len);
这句确实有问题