草庐IT

new_size

全部标签

c++ - 为什么在分配有 'new' 的指针上调用 free() 会导致堆损坏?

它是否真的在某些编译器/机器上工作,但在其他编译器/机器上会导致堆损坏和崩溃?有人知道幕后发生了什么吗? 最佳答案 当您使用delete时,C++想要在对象上调用析构函数,但是将它传递给free不允许这种情况发生。如果对象包含其他对象,那么这些对象的析构函数也不会被调用。如果对象中有指针,那么这些指针就不会被释放。此外,C++的new和delete实际上可以从malloc请求更多的内存,并将额外的内存用于记账(例如存储析构函数的地址),因此您传递给free的指针实际上不会是malloced。

php - fatal error : Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes)

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicate:Allowedmemorysizeof33554432bytesexhausted(triedtoallocate43148176bytes)inphp嗨,在我的php页面,我得到如下错误,Fatalerror:Allowedmemorysizeof134217728bytesexhausted(triedtoallocate71bytes)我尝试使用ini_set('memory_limit','128M');设置内存限制;但我还是得到了错误。任何帮助将不胜感激。 最佳答案

php - 如何故意造成 "Fatal error: Allowed memory size of xxx bytes exhausted"

每当我收到此错误时,我都会增加内存来修复它。我有一个案例,出于测试目的,我想让一个页面用完所有内存,无论我设置memory_limit多大。我不知道该怎么做。编辑:我试过这个:但它没有崩溃。最后它只打印了“startstart”,奇怪的是它被打印了两次......我想要一个简单的代码示例,“将很多东西放在内存中”..嗯,我知道这么多。 最佳答案 应该吃掉所有的内存。$a='x';while(true){$a=$a.$a;} 关于php-如何故意造成"Fatalerror:Allowedm

c++ - 分配字符串时 char* new 和 delete [] 错误

我需要一个C++复习。为什么会出现内存异常?pear=newchar[1024];pear="happygolucky";delete[]pear;//exception 最佳答案 pear=newchar[1024];1024个字符的内存是从堆中分配的,pear指向它的开头。pear="happygolucky";pear现在指向位于只读段中的字符串文字,并且先前分配的内存已泄漏。delete[]pear;您尝试释放只读字符串,这是一种未定义的行为,表现为运行时异常。 关于c++-分配

c - 在 C 函数中需要 "nmem"和 "size"参数吗?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:cdifferencebetweenmallocandcallocWhydoescallocrequiretwoparametersandmallocjustone?我注意到许多C函数调用尤其是处理内存或文件操作的函数调用,但并非所有函数都使用这两个参数。例如malloc传递了一个参数,即所需内存空间的大小(以字节为单位)。另一方面,Calloc被传递了两个参数,一个元素的字节大小和元素的数量(大小和nmem)。还有其他函数也使用这些大小和nmem参数。基本上calloc调用将分配与调用malloc(nmem

关于 'new'关键字的Java内存问题

如果你运行以下代码会发生什么..while(true){Stringx=newString("ABC");}在内存方面?Stringx是分配在栈上还是堆上?程序最终会因为内存溢出而崩溃,还是垃圾收集会阻止这种情况?new关键字是否总是在堆上创建对象?什么时候在堆栈上创建对象?谢谢! 最佳答案 IsStringxallocatedonthestackorontheheap?x不是String。它是对String的引用。引用是一个局部变量,所以在堆栈上。String是一个对象,所以在堆上。Willtheprogrameventually

c++ - 通过 new[] 分配 n 个字节并用任何类型填充它?

我想动态分配已知大小的内存(只是内存,不关心类型)并用完全相同数量的数据填充它,但任何类型(我只确定它将是原始类型)。Ofc稍后我会释放它。没事吧?:autodest=newint8_t[n];std::memcpy(dest,src,n);delete[]dest;src是指向大小为n(字节)的数组。我选择了int8_t因为这是分配一定数量内存的最清晰的方法。事实上,上面的代码并不完全是什么。delete[]将在实际上它指向的类型的指针上调用。例如,如果src是一个float组(忘记上面代码的最后一行):float*ptr=dest;delete[]ptr;再说一遍。会好吗?

c++ - STL Vector是否默认使用 'new'和 'delete'进行内存分配?

我正在为应用程序开发一个插件,其中的内存应该由应用程序分配并跟踪它。因此,应该以缓冲区的形式从主机应用程序获取内存句柄,然后将它们返回给应用程序。现在,我正计划使用STLVectors,我想知道它在内部使用了什么样的内存分配。它是否在内部使用"new"和“删除”功能?如果是这样,我可以用自己的函数重载"new"和“删除”吗?或者我应该创建自己的模板分配器,这对我来说似乎是一项艰巨的工作,因为我在创建自定义模板方面没有那么丰富的经验。欢迎任何建议/示例代码。可以像这样从应用程序中获取内存句柄void*bufferH=NULL;bufferH=MemReg()->New_Mem_Handl

c++ - 如果通过委托(delegate)给 `free` 的重载 `new[]` 分配内存,那么 `malloc` 内存是否安全?

我的问题与Isitsafeto`free()`memoryallocatedby`new`?不重复.我正在为POD编写一个玩具垃圾收集器,我在其中定义了我自己的自定义operatornew/new[]和operatordelete/delete[].代码如下:#include#includestd::mapmemory;//globallyallocatedmemorymapstructcollect_t{}collect;//tagforplacementnewvoid*operatornew(std::size_tsize,constcollect_t&){void*addr=ma

c# - .net 中的 "new "关键字实际上是做什么的?

我知道new关键字正在调用类构造函数,但我们在哪个阶段为类分配内存?据我了解,它应该对应于GCHandle.Alloc(Object)方法,但我找不到连接。 最佳答案 new运算符在CLR中实现。它从垃圾收集堆中分配内存并执行类构造函数。GCHandle.Alloc()不相同。这利用了GC中的单独机制来创建对对象的引用,这些引用存储在单独的表中并被扫描,除了在垃圾回收期间通常发现的对象引用。您必须通过Alloc()一个现有的对象引用,它会添加另一个。用于创建弱引用和固定引用以及允许非托管代码存储对托管对象的引用并使其保持事件状态的机