在C++中初始化构造函数内的字符数组(数组索引越界)



我正试图在构造函数中初始化这两个字符数组。错误在于字符数组buf和clientip,其他的都很好。我在下面添加了整个构造函数的代码:

class server : public udp {
public:
server() {
clientLength = 0;
buf[1024] = {};
bytesIn = 0;
count = 0;
clientIp[256] = {};
portnumber = 0;
}
private:

int clientLength = sizeof(client);
char buf[1024];
int bytesIn;
int count = 0;
char clientIp[256];
unsigned short portnumber = 70000;

警告是:

*(error(在索引1024处访问了数组"buf[1024]",该索引超出了界限。[arrayIndexOutOfBounds]

(错误(在索引256处访问了数组"clientIp[256]",该索引超出了界限。[arrayIndexOutOfBounds]*

我该如何解决这个问题?

buf[1024] = {};不是您想要的。它将访问buf的第1024个元素,默认情况下只初始化该元素,但它超出了界限。

你可能想要的:

class server : public udp {
public:
server() : clientLength(), buf(), bytesIn(), count(), clientIp(), portnumber(){
}

如果可能,您应该始终首选成员初始化列表。

相关内容

  • 没有找到相关文章

最新更新