-1
說我有從按值返回結構結構在循環值
struct foo{
int bar;
bool success;
}
foo getThefoo();
如果調用此函數如
int foolen = 0;
foo** foos;
do {
foolen++;
foos = realloc(foos,sizeof(foo*)*foolen);
foo myfoo = getThefoo();
foos[foolen-1]=&myfoo;
}while (/**something*//)
在一個循環中發生什麼事情的新富另一個API函數struct爲每次迭代在堆棧上分配?或者是初始分配重用?我問,因爲指向這個結構的指針可能是一個意想不到的值。
getThefoo
是在外部庫中定義的。因此,它不是微不足道的返回一個指向食物結構的指針。
未定義的行爲。將數據複製到堆或在超出範圍時無效。 –
如果顯示的代碼編譯了C++編譯器,則使用該編譯器。它不會使用C編譯器進行編譯。 ('foo myfoo = ...','sizeof(foo *)')。對於顯示爲有效的C代碼,所有這些「foo」都需要是「struct foo」。 – alk
@alk另外,還有兩個分號丟失。 – wildplasser