Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果没有指针,获取工厂函数指针会发生什么?_C++_Pointers_Dynamic Allocation - Fatal编程技术网

C++ 如果没有指针,获取工厂函数指针会发生什么?

C++ 如果没有指针,获取工厂函数指针会发生什么?,c++,pointers,dynamic-allocation,C++,Pointers,Dynamic Allocation,由于错误,我使用了工厂函数,并且没有将返回的指针存储在任何地方。我不确定我的问题是否愚蠢, 但是,如果我们在函数中动态分配内存,然后返回该内存,但不提供任何指针来存储它,会发生什么呢?那么,记忆会发生什么变化呢?这意味着根本没有机会删除它?及 像这样: Aclass* getAclass() { return new Aclass(); } int main() { getAclass(); } 它将一直保留在那里,直到程序关闭并且操作系统回收该内存。至少是那些具有内存管理器

由于错误,我使用了工厂函数,并且没有将返回的指针存储在任何地方。我不确定我的问题是否愚蠢, 但是,如果我们在函数中动态分配内存,然后返回该内存,但不提供任何指针来存储它,会发生什么呢?那么,记忆会发生什么变化呢?这意味着根本没有机会删除它?及 像这样:

Aclass* getAclass()
{
    return new Aclass();
}

int main()
{
    getAclass();
}

它将一直保留在那里,直到程序关闭并且操作系统回收该内存。至少是那些具有内存管理器的操作系统或具有硬件内存管理器的系统


某些具有“”的语言可能会注意到指针指向未使用的内存,并将删除该内存本身。如果不返回指针,则无法获取内存。如果不使用该指针,它将被垃圾收集,前提是该语言理解该内存已不再使用。

它将一直保留在那里,直到程序关闭且操作系统回收该内存。至少是那些具有内存管理器的操作系统或具有硬件内存管理器的系统


某些具有“”的语言可能会注意到指针指向未使用的内存,并将删除该内存本身。如果不返回指针,则无法获取内存。如果你不使用那个指针,如果语言理解内存不再使用,它将被垃圾收集。

@沙扬在添加C++标记之前回答了你的问题。C++中存在垃圾收集器,但很少有人使用。them@shayan我在回答你的问题之前添加了C++标签。C++的垃圾收集器确实存在,但是很少有人使用MaTa。良好工厂返回一个
std::unique\u ptr
。它解决了这个特定的问题,但也解决了更现实的代码中的一般问题:
std::cout getDescription()例如。此外,人们越来越习惯将工厂命名为
makeFoo
,这样你就知道它们不是getter。一个好的工厂会返回一个
std::unique\u ptr
。它解决了这个特定的问题,但也解决了更现实的代码中的一般问题:
std::cout getDescription()例如。此外,人们越来越习惯将工厂命名为
makeFoo
,这样你就知道它们不是getter。