相关疑难解决方法(0)

Java程序员想要理解C++代码:使用没有new的对象的方法

我多年来一直在使用Java.现在我需要了解一个C++程序.

TimeStamp theTimeStamp;
theTimeStamp.update();
Run Code Online (Sandbox Code Playgroud)

令我困惑的是为什么我们不写

TimeStamp theTimeStamp = new(); 
Run Code Online (Sandbox Code Playgroud)

我的直觉是,要使用对象,应首先分配内存空间并将其与对象关联.

我想这是Java和C++从根本上有所不同的一点?你能澄清一下吗?

[EDIED]我写了'TimeStamp theTimeStamp = malloc();'

c++ malloc new-operator

-2
推荐指数
1
解决办法
268
查看次数

没有'new'关键字的C++中的内存分配

我有一些由MATLAB Coder生成的代码.它包括这种类型的一些变量定义:

int tmp_size[400];
Run Code Online (Sandbox Code Playgroud)

在方法范围结束之前,不会显式删除这些变量.

变量是在堆还是堆栈上分配的?这相当于以下几点吗?

int* tmp_size = new int[400];
Run Code Online (Sandbox Code Playgroud)

是否最好用内存管理来重写这些变量定义new,比如int* tmp_size = new int[400];

我注意到内存是由我的程序分配的,永远不会被释放.这可能是造成内存泄漏的原因吗?

c++ memory-leaks memory-management new-operator matlab-coder

-2
推荐指数
1
解决办法
1069
查看次数

C++:通过char*获取字符串输入

我对在C++中输入字符串完全感到困惑.

char str[4];
cin>>str;
cout<<str;
Run Code Online (Sandbox Code Playgroud)

作品.但是

char* str;
cin>>str;
cout<<str;
Run Code Online (Sandbox Code Playgroud)

不起作用.为什么?

c++ string pointers

-4
推荐指数
1
解决办法
51
查看次数

在同一个对象上使用"new"两次会发生什么?

可以说我们有这个......

class MyClass
{
    int value;

    void addIntToObject(int num)
    {
        value = num;
    }

}


MyClass *object = new MyClass();
object->addIntToObject(1);
object->addIntToObject(2);
Run Code Online (Sandbox Code Playgroud)

现在让我们说我们再做一次......

object = new MyClass();
Run Code Online (Sandbox Code Playgroud)

通过在同一个对象上使用new两次,这是否意味着我们删除了存储在对象中的所有数据?有人可以向我解释在同一个对象上使用new两次的确切工作方式

这是一种释放记忆的有效方法吗?(比如使用删除和删除[])

c++

-4
推荐指数
1
解决办法
578
查看次数

在为指针重新分配值之前使用“删除”是多余的吗?

我应该在下面的示例中使用“删除”吗?

int main(){
T object;
T* pointer = new T[4];
delete[] pointer; // this line is redudant? or error?
pointer = &object;
}
Run Code Online (Sandbox Code Playgroud)

我向 Chat GPT 询问同样的问题,它说:“行删除是多余的,可能会导致未定义的行为,因为当您重新分配指针时,堆上的数据会自动释放”。但我对此有疑问。那么我应该在那里使用“删除”吗?

c++

-8
推荐指数
1
解决办法
145
查看次数