我需要对此变量进行删除吗?

时间:2014-12-12 07:27:43

标签: c visual-c++

这个分配是否在堆栈上完成,我是否需要在此cLastDateToRun代码上进行删除?它内部有一个功能。

wchar_t cLastDateToRun[9] = { 0 };
wcsncpy_s(cLastDateToRun, SerialNumber, 8);
cLastDateToRun[8] = L'\0';
int LastDateToRun = _wtoi(cLastDateToRun);
delete[] cLastDateToRun;

3 个答案:

答案 0 :(得分:1)

由于您的数组已在堆栈上,因此无需free()它。只应释放您使用malloc() calloc()realloc()分配的内存。 在堆栈上显式释放内存将导致未定义的行为。

答案 1 :(得分:1)

对于C(也可以与C ++一起使用):
您只能free() malloccallocrealloc

对于C ++:
您可以使用deletedelete[] newnew[]

释放或删除未动态分配的内容会导致未定义的行为等问题。 有关更多知识,请参阅有关dynamic memory

的更多信息

答案 2 :(得分:0)

恕我直言,其他评论太弱了。这不是你不需要它不是你必须没有。释放用于动态分配的内存。您拥有的东西由编译器保留并在离开函数后消失(但在静态的情况下)

我手边没有标准,但我认为释放未动态分配的局部变量的帽会调用未定义的行为。所以这意味着它可以自由地对它所引导的任何东西造成任何伤害。