Memory python中的内存错误
我对python非常陌生,我知道非常好的C语言编程 在C中多次调用以下函数时,会导致内存错误:Memory python中的内存错误,memory,python,Memory,Python,我对python非常陌生,我知道非常好的C语言编程 在C中多次调用以下函数时,会导致内存错误: #include <stdio.h> #include <stdlib.h> char *foo(){ char *a=(char*)malloc(1000); return a; } void main(){ char *A; while(1){ A=foo() // Will cause memory leack
#include <stdio.h>
#include <stdlib.h>
char *foo(){
char *a=(char*)malloc(1000);
return a;
}
void main(){
char *A;
while(1){
A=foo() // Will cause memory leack Or some kind of error and crash
}
}
我这样问是因为我知道“数据”是一个列表类型的对象,这意味着它就像C。。。
非常感谢 Python中内存块悬空时没有内存耗尽的风险。Python使用垃圾收集器来处理不再被引用的对象。因此,每次使用
foo()
的结果分配data
时,前面的数组不再有任何指向它的引用,并将在某个点被垃圾收集器擦除 实际上,我认为在这个特定的示例中答案是否定的,因为每次在foo()开头创建列表时,python都会在检测到不再引用该列表时自动释放该内存,这将发生在将foo()的下一个返回值赋给while循环中的数据变量时
在C语言中,必须编写释放malloc()内存的代码。在python中,解释器正在分配内存,一旦不再需要,解释器可以自动释放内存。讲cplusplus语言的python不支持内存泄漏:),但在python世界中,内存泄漏有不同的含义。让我举个例子:
some_dict = {}
k = 'key'
v = "value"
some_dict[k] = v
因此,现在
一些dict
包含一个到k
的链接。如果somedict
是一个长寿的对象,python将保持v
活动,直到somedict
死亡。若应用程序有很多longlive对象占用了操作系统的所有内存,它将在第一次分配失败后收到一个请求。如果您想接收内存错误
-只需打开内存中的一些非常大的文件(超过RAM+交换量)。@Jimilian@Jean-Noel Avila非常感谢!!我是Python新手。。我过去经常用C语言编程。。。完美的答案!
some_dict = {}
k = 'key'
v = "value"
some_dict[k] = v