我最近遇到了字符串文字并找到了一些新字符串,如u16string和u32string.我发现可以使用std :: wcout将wstring打印到控制台,但这对u16string或u32string不起作用.我怎样才能将这些打印到控制台?
好的,所以我在 C++ 中尝试使用指针,因为我在将近一年半的休息(学校的东西)后又开始编码了。所以如果这对你来说很幼稚,请原谅我,我只是生锈了。
无论如何,我在 VS 2019 中纠结于指针,我注意到一些事情开始困扰我。
这是我写的代码:
#include <iostream>
int main() {
int* i = new int[4];
*i = 323;
*(i + 1) = 453;
std::cout << *i << std::endl;
std::cout << *(i + 1) << std::endl;
delete i;
}
Run Code Online (Sandbox Code Playgroud)
有些东西看起来很奇怪吧?别担心,删除是故意的,并且是这个问题的重点。现在我预计它会发生一些内存事故,因为这不是我们在堆上删除数组的方式,但令我惊讶的是,它没有(我在 Debug 和 Release 中都这样做了并且有相同的观察)
现在我期待在删除时发生某种事故,因为我没有按照应该删除的方式删除它。但
删除不正确
现在在另一次运行中,我实际上正确地使用了删除运算符,它做了同样的事情:
现在,当我尝试使用 malloc 分配并使用 delete 释放它时,我得到了相同的结果。
所以我的问题是 - 为什么我的代码没有搞砸?我的意思是,如果这是它的工作方式,我可以使用 delete(指针)来擦除整个数组。
我的问题的要点是“新操作员在幕后做什么?”