c++ - 在这种情况下我必须删除内存吗?

标签 c++ dynamic struct

这是一个使用动态内存的简单程序。

我的问题是我是否必须删除 和 处的内存,或者结构会为我处理它?

#include <iostream>
struct Student {
  int grade;
  char *name;
};

void print(Student name);
int main() {
  Student one;
  one.grade = 34;
  one.name = new char[12];
  int i;
  for (i = 0; i < 11; ++i) {
    one.name[i] = 'a' + i;
  }
  one.name[i] = '\0';
  print(one);

  delete[] one.name;
  return 0;
}
void print(Student name) {
  std::cout << name.name << " has a score of " << name.grade << "\n";
}

最佳答案

有一个简单的经验法则 - 每次调用 new 都应该调用一次 delete。在这种情况下,您应该像这样删除 one.name:delete [] one.name

当然你应该在你不再需要它的值(value)之后这样做。在这种情况下,这是在返回之前。

关于c++ - 在这种情况下我必须删除内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794786/

相关文章:

c# - 将 static const char* 从 C++ 编码到 C#

Android,CMDTool,标准输出重定向, "Fatal signal 11 (SIGSEGV)"

asp.net - 无法加载 View 状态。正在加载 View 状态的控制树必须与用于保存 View 状态的控制树匹配

go - 以匿名结构作为参数导出函数[不能在 package.Func 的参数中使用值(类型 struct {...})作为类型 struct {...}]

c++ - Makefile - 通配符,如何正确执行?

c++ - 当 unique_ptr 在 vector 中时,对 std::unique_ptr<> 拥有的对象的引用/ptr 是否安全?

动态内容的 Symfony 翻译

c - C中的段错误(具有动态内存分配的二维数组)

c++ - 是否可以使结构直接返回值?

c - 释放结构内结构中的分配