C
C++
標題取自於靈感取自於線上講座 - 你所不知道的 C 語言
free
/delete
在有GC語言特性的程式語言中,如: C#、Java、Golang,若要清空一個變數的值,會類似這樣寫法:
MyClass name = new MyClass();
name = null;
指派為Null
之後,接下來就交給GC去檢查還有沒有去使用這個變數了,但C與C++不一樣,如果動態配置的記憶體,釋放過後只是告訴電腦「我把這個記憶體還給OS了」,而於本處存記憶體位置的變數會是「未定義」的,所以,有一個Best Practice是當釋放記憶體之後,把變數設為null,方便後續要對改變數作處理:
// C
int* i = malloc(sizeof(int));
*i = 100;
free(i);
i = NULL;
// C++11
int* i = new int();
*i = 100;
delete i;
i = nullptr;
還有,在釋放記憶體後,並指派為null的這件事可以避免同一個記憶體重複事後兩次的執行期錯誤:
int* i = malloc(sizeof(int));
free(i);
i = NULL;
free(i);
// No exception in run-time
持續更新中!有用到就會更新上來。
Mar 19, 2024以下記錄先前用過的插件與開源專案 DOTween UI特效 - mob-sakai/UIEffect Debugging - yasirkula/UnityIngameDebugConsole
Jan 19, 2022:::success :sunglasses: 持續更新中....因為坑只會越踩越多 ::: 按鈕點下去沒反應... :::info UI Button不能按可能來自以下這幾個原因 ==請先利用EventSystem查看點到甚麼物件== Button沒有Raycast Target(預設為Image元件),或是Raycast Target沒有打勾(為false)
Jan 19, 2022先前看到有人在private變數上使用了SerializeField這個屬性(Attribute)。 unsing UnityEngine; // 給個範例 public class Character : MonoBehaviour { [SerializeField] private int HP;
Jan 19, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up