c++数组初始化和释放问题

char str[1024];
memset(str, '\0', 1024 * sizeof(char));

代码如上,我想问一下:
1.这是静态分配内存还是动态分配内存,为什么?
2.这样初始化还需要delete[]释放吗?为什么?

char str[1024];
定义在堆栈上
memset(str, '\0', 1024 * sizeof(char));
这个不是初始化,只是清零。和你写
for (int i = 0; i < 1024; i++) str[i] = '\0';是一回事

有new malloc才是动态分配内存,用了new才需要delete

这个是在栈上分配的,超出作用域范围系统给自动释放了,可能数据没有被删除或清空,但是不在有效,不可能访问;
只有是你主动new的才需要delete

char str[1024]已经确定大小是静态分配,里面没有内容而使用memset,几乎是多余的

普通局部变量定义, 定义在栈上, 不需要delete, 系统自动回收.