我有函數。 FunctionA和FunctionB。兩個函數局部變量的內存衝突
in FunctionA
{
char *m; //Pointed to Shared Memory A
char outa[600000]
//Coping the Data into another character array
memcpy(out, m, 6000000);
// Now Processing this Data,
// After Processing I am storing this data.
}
in FunctionB
{
char *m; //Pointed to Shared Memory B
char outb[600000]
//Coping the Data into another character array
memcpy(out, m, 6000000);
// Now Processing this Data,
// After Processing I am storing this data.
}
現在主要是,我創建一個線程函數,不斷調用函數A和函數B,一個接一個。
但是,有時函數outBuffer得到,而讀取函數B出緩衝區。
但是,當我移動這兩個緩衝區作爲一個類的成員變量,然後沒有內存衝突的問題。
爲什麼發生在第一種情況? 我做了什麼錯事?
請提供一個[mcve] –
*「當我將這兩個緩衝區作爲類的成員變量移動時」* - 哦,親愛的... * * facepalm \ *您的函數有本地數組,它們在您退出時被銷燬。沒有記憶碰撞發生!你只有UB的股息(指向無效的緩衝區) – WhiZTiM