这是我现在遇到的问题:
class Header{
//something here
};
class Packet{
public:
Packet(Header* _header){
header = _header;
};
char buf[1000];
Header* header;
}
所以看起来就这么简单。当我创建一个标头(_header),然后将其用作创建数据包的参数时,调试器中的一切看起来都不错:数据包的指针标头确实指向之前创建的 _header。
现在,我开始加载 1000 个字符到 buf。对于前几百个字符,事情看起来仍然不错。但是当复制到 buf 的字符数变大(大约 800 个)时,数据包的指针头会突然被垃圾。不知道为什么。后来当我尝试访问创建的数据包的标头时,它是一个垃圾地址,程序崩溃了。
我尝试了 2 种加载 buf 的方法(通过strcpy
并一一复制,如buf[i]=...
),但仍然面临同样的问题。
可以帮助澄清或解决这个问题吗?谢谢