你好stackoverflow 所以我的問題是:我想做一個函數來生成結構數組,但是當我完成時我得到一個錯誤插入值是什麼問題? 像這樣我想動態地創建一個結構數組,但是我得到一個堆損壞錯誤:
struct INFO
{
char name[20]; // creating the strucure
int age;
};
void generateArr(INFO *p); // a function to generate the array
void readArr(INFO *p); // a function to read the array
int main()
{
INFO *ptr =new INFO; // a pointer that points to the structure
generateArr(ptr); // calling the functions
readArr(ptr);
delete[]ptr; // deallocating memory
}
void generateArr(INFO *p)
{
p = new INFO [3]; // generating three INFO structures
}
void readArr(INFO *p)
{
for (int i = 0; i < 3; i++)
{
cin >> p[i].name>> p[i].age; // inputting the elements
cout << endl;
}
}
我試圖使代碼儘可能明確,問我如果有什麼不明確。
你會得到什麼錯誤? – tinkertime
您只分配給'generateArr'中的參數。它對外部世界的影響與'void f(int x){x = 0; }'。 – molbdnilo
你在main中爲'ptr'分配內存並嘗試覆蓋'generateArr'中的指針。如果它能夠工作,那將是一次泄漏,但這並不是因爲它是按價值傳遞的。這也是你的程序崩潰的原因,'ptr'只有'readArr'中的1個元素的內存。 – Unimportant