我创建了一个用于网络的缓冲区类,并使用副作用来获取缓冲区指针以及大小。我创建了一个简单的测试,它显示与类的 getptr() 函数相同的行为。
char SomeBuffer[100];
void* getbuf(int& size) {
size = 100;
return SomeBuffer;
}
int testrecv(void* ptr, int size) {
int i = 0;//BREAKPOINT HERE
return 0;
}
int main(int argc, char**argv) {
int size;
testrecv(getbuf(size), size);
}
当我从 testrecv() 函数中查看变量时,大小是留在堆栈上的一些随机值。由于 getbuf() 的副作用,testrecv() 中的大小不应该为 100 吗?