我已經創建了一個緩衝區類用於網絡,我使用副作用來獲取緩衝區指針以及大小。我創建了一個簡單的測試,顯示與該類的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 –