我在某个地方看到了以下代码:
class Person {
private:
string *customerName;
public:
Person() {customerName = new string;}
void setCustomerName(char *s) {*customerName = s;}
};
int main()
{
Person person1;
Person person2;
person1.setCustomerName("Malcolm");
person
尝试了许多方法来强制GC清理内存,但都没有成功。最重要的是:
buf.remove(); // does not exist
delete buf; // does not deallocate the memory
buf = null; // removing references - no result
问题出现在以下例程中:
function loadImage(url, finish){
var Image = Canvas.Image;
request.get({url:url, encoding:null}, responseImage);
我有一个有向量成员的类。我有访问器来设置/获取向量的值。
typedef vector<int> vint_t;
class MyVector {
public:
MyVector(const vint_t & v) : _vint(v) {};
size_t set(const vint_t & v) {
_vint = v; // Will this leak memory in the old location of _vint?
const size_t n = v.size();
r
我最近第一次用Visual检漏检测器分析了我的代码,它指示了向量中的泄漏,这是我没想到的。代码如下:
void func()
{
std::vector<MsgUnit> msgVec;
do
{
// msgVec.clear(); // do I need to do this to avoid a leak?
msgVec = m_obj->returnMsgUnitVector();
}
while (someConditionNotMet);
// process msgVec
如果我在python函数中创建一个列表并将其返回给调用者,那么垃圾收集如何处理该列表?我需要做些什么来防止内存泄漏的发生吗?
例如:
#!/usr/bin/python
import random
class Example:
def f1(self):
list = []
len = random.randint(0, 30)
for i in range (0, len):
list.append(random.randint(0, 65536))
return list
ran
我的一个朋友告诉我,我的代码中有一个内存泄漏
Base
{
public:
vector<Foo*> fooes;
};
Derived : public Base
{
public:
Derived ( )
{
for ( int i = 0 ; i < 10 ; i++ )
{
this.fooes.push_back ( new Foo() );
}
};
};
但是他是个很
我有一个类,我试图将它的一些成员函数转换为在不同的线程中运行。虽然程序没有问题,但当它试图从图像缓冲区(由另一个线程更新)读取时,它会崩溃。在_beginthread中,当参数被错误地传递时,问题似乎是由它引起的。
下面的代码片段应该能更清楚地解释我想要做什么。基本上,我想要完成的是让成员函数"fillBuffer“填充一个图像缓冲区,而程序的其余部分则在做其他事情,包括同时读取相同的图像缓冲区。
对语法的任何帮助都是非常感谢的。
const int MaxImgBufferSize = 5;
class MyFrame : public wxFrame
我有以下问题:
当我使用带有内置的std::vector时,我不会得到内存,但是如果我使用类,我就会得到内存泄漏。举例说明:
//No leak
std::vector<double>* vecPtr1=new std::vector<double>();
//add some elements
delete vecPtr1;
//Leaks some memory but not all
std::vector<SomeClass>* vecPtr2=new std::vector<SomeClass>();
//add some eleme
我用File.h编写了一个File类。并且我用包含File&向量的Directory.h编写了目录类。两个标头具有相同的命名空间。
代码如下:
#include "File.h"
#include <vector>
class Directory : public File
{
public:
...
private:
std::vector<(File&)> files;
};
当我尝试编译它时,它会说:
In file included from Directory.cpp:1:0:
Directory.h:2
在最近的一次更改中,我的程序在创建缓冲区时从使用数组切换到向量,一个完全不相关的问题浮出水面。此切换涉及创建std::vector<std::vector<std::vector<GLfloat> > > terrainMap;而不是GLfloat[size+1][size+1][4] terrainMap。为了初始化3-D向量,我使用
terrainMap.resize(size+1);
for (int i = 0; i < size+1; ++i) {
terrainMap[i].resize(size+1);
for (in
我目前正在重构并将现有代码更改为C++11,我想知道是否有内存泄漏。我的代码中有一个带有std::vector的结构,还有一个方法,可以将这个向量向下转换为负元素。
struct mystruct_t {
int other_stuff;
std::vector <int> loc;
// Adds elements to loc vector
void add(int pos){
loc.push_back(pos);
}
// Shrink the list
void shrink () {
我目前正在学习Rust编程语言,在阅读了关于所有权和终身概念(我认为这是GC的优雅替代)之后,我无法找到以下问题的答案。就所有权和生命周期而言,下面的代码按照注释的方式工作。
fn main() {
let mut x: u32 = 10; // x is pointing to memory in stack
println!("before reassignment: x = {}", x); // prints 10
x = 11; // memory in stack simply has been updated with another va
我正在尝试用C++编写一个合并排序函数,但在( MergeSort函数中)上遇到错误:
A = MergeSort (A, x);
B = MergeSort (B, y);
C = Merge(A,B,x,y);
作为从int到int*的无效转换。我做错了什么?任何帮助都将不胜感激!谢谢。
下面是我的函数代码:
int MergeSort (int [], int);
int Merge (int [], int [], int, int);
int MergeSort (int arr[], int len) {
int x = len/2;
i
我正在尝试查找并修复应用程序中存在的内存泄漏。我正在试用的一个内存分析工具- C++内存验证器-显示大约每5分钟分配1,310,706个字节。这些分配的调用堆栈可以追溯到我认为是Embarcadero内存管理器的地方,它是用pascal编写的。有问题的函数是:
{Allocates a new sequential feed medium block pool and immediately splits off a
block of the requested size. The block size must be a multiple of 16 and
medium blocks
我正在尝试找出我的valgrind调试出了什么问题。我正在慢慢地学习这个valgrind。
调试:
==1701== HEAP SUMMARY:
==1701== in use at exit: 390 bytes in 12 blocks
==1701== total heap usage: 59 allocs, 47 frees, 1,097 bytes allocated
==1701==
==1701== 39 bytes in 1 blocks are definitely lost in loss record 6 of 12
==1701== at 0x4C2A