我已经创建了一个缓冲区类用于网络,我使用副作用来获取缓冲区指针以及大小。我创建了一个简单的测试,显示与该类的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()函数内的变量时,size是留在堆栈上的一些随机值。由于getbuf()中的副作用,testrecv()中的大小不应该是100吗?
http://stackoverflow.com/questions/621542/compilers-and-argument-order-of-evaluation-in-c –
http://stackoverflow.com/a/367663/14065 –