gpt4 book ai didi

c++ - 在函数内部 malloc 一个全局变量是错误的吗?

转载 作者:行者123 更新时间:2023-11-30 03:06:02 24 4
gpt4 key购买 nike

我有两个“简单”的 C++ 问题。

1- 我想创建一个由类中的某些方法共享的变量,所以我正在做的是在头文件中声明该变量并使其成为类的全局变量。因此,所有方法都可以访问它。这是正确的做法吗?

2- 按照我的第一点,如果我在 header 中将变量 N 声明为 double *N。然后在我的一种方法中,我做

N = (double*) malloc (sizeof(double)*50);

我知道 N 将在函数内部分配内存。我的问题是:这个内存是只在函数内部保留还是一直保留在全局 N 中?

如果内存不会被保留给N,那么这个方法就不是一个好方法,因为系统可能会在稍后的过程中覆盖N的值该程序。

请多多指教,谢谢

编辑:感谢大家的输入和编辑我的问题。显然我错误地将我的变量称为全局变量,而它实际上是一个类成员。我认为此声明称为全局变量,因为该变量对于类内部的方法是全局的。希望我下次问一个“更聪明”的问题 :)

最佳答案

  1. 不,避免全局变量。为您的变量找到正确的范围和封装。放在那里。

  2. 如果您将某物声明为 double 并尝试为其分配一个指针,则什么也不会发生。您的代码根本无法编译。我假设您正在谈论全局 double*。您需要为该指针 malloc 内存,并且它与 malloc 一样,而不是在范围末尾的 freed。你需要自己做,但这对于全局来说可能不太重要。

我就到此为止吧。错误太多了。你不应该在 C++ 中使用 malloc。你不应该在 C++ 中使用普通数组。而且你应该尽可能避免使用全局变量。您应该用代码说明您正在尝试做什么。

关于c++ - 在函数内部 malloc 一个全局变量是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com