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

用户8054407

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

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

#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您都应该调用一次删除。在这种情况下,您应该像这样删除 one.name : delete [] one.name

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在这种情况下,我是否必须同步RPC?

在这种情况下,我需要“默认”语句吗?

我可以在这种情况下使用枚举吗?

在这种情况下我应该检查指针吗?

在 C++ 上创建指针时如何删除错误?在这种情况下,我必须使用原始指针

在这种情况下,局部变量会占用内存吗?

为什么我必须在这种情况下使用 GroovyMock?

在这种情况下,为什么我必须禁止显示XML

为什么在这种情况下我必须将指针传递给指针

在这种情况下,为什么必须单击两次才能加载我的图像?

为什么我必须在这种情况下使用 !important ?

在这种情况下,我是否必须制作 NAT GW?

Btrfs:在这种情况下删除@home子卷是安全的吗?

在这种情况下,我应该在哪里叫删除?

我可以在这种情况下避免使用纯纯虚函数吗?

在这种情况下,我应该使用reduceLeft方法吗?

在这种情况下,我真的需要两张桌子吗?

在这种情况下,我可以从反应式库中受益吗?

在这种情况下,我真的需要实现迭代器吗?

在这种情况下我的数据库会坏吗

在这种情况下,我应该使用隔离范围吗?

在这种简单情况下,我应该使用同步块吗?

在这种情况下我可以正确使用flex吗?

在这种情况下我的 strcmp 使用不正确吗?

在这种简单情况下,我应该坚持使用LINQ吗?

在这种特殊情况下,我可以使用Nginx作为反向代理吗?

我需要在这种情况下创建片段吗?

在这种情况下,我可以参考该键吗?

在这种情况下,我真的应该实现IDisposable吗?