这个分配是否在堆栈上完成,我是否需要在此cLastDateToRun代码上进行删除?它内部有一个功能。
wchar_t cLastDateToRun[9] = { 0 };
wcsncpy_s(cLastDateToRun, SerialNumber, 8);
cLastDateToRun[8] = L'\0';
int LastDateToRun = _wtoi(cLastDateToRun);
delete[] cLastDateToRun;
答案 0 :(得分:1)
由于您的数组已在堆栈上,因此无需free()
它。只应释放您使用malloc()
calloc()
或realloc()
分配的内存。
在堆栈上显式释放内存将导致未定义的行为。
答案 1 :(得分:1)
对于C(也可以与C ++一起使用):
您只能free()
malloc
,calloc
或realloc
对于C ++:
您可以使用delete
或delete[]
new
或new[]
释放或删除未动态分配的内容会导致未定义的行为等问题。 有关更多知识,请参阅有关dynamic memory
的更多信息答案 2 :(得分:0)
恕我直言,其他评论太弱了。这不是你不需要它不是你必须没有。释放用于动态分配的内存。您拥有的东西由编译器保留并在离开函数后消失(但在静态的情况下)
我手边没有标准,但我认为释放未动态分配的局部变量的帽会调用未定义的行为。所以这意味着它可以自由地对它所引导的任何东西造成任何伤害。