标签: memory-management

ubuntu gcc中的分段错误

#include<stdio.h>
int main()
{
    char *ch;
    int n=10;
    gets(ch);
    puts(ch);
    printf("%d\n",n);

}   

#include<stdio.h>
int main()
{
    char *ch;
    int n=10;
    gets(ch);
    printf("%d\n",n);
    puts(ch);

}   
Run Code Online (Sandbox Code Playgroud)

在第一个中,分割错误发生在print(n)处,而第二个分支错误发生在puts(ch)处.如果在声明n之后也使用print(n),则不会发生错误.

c pointers memory-management

0
推荐指数
1
解决办法
71
查看次数

OpenCV/C++ - 如何释放指针

我不得不做一个涉及cv :: Ptr(指针)的技巧,以便能够调用特定的函数,但是当程序执行后尝试释放内存时,程序似乎有一些问题,因为发生了分段错误.


1.Code:

SurfDescriptorExtractor extractor1;
 Ptr<DescriptorExtractor> extractor = &extractor1;      
 FlannBasedMatcher matcher1;
 Ptr<DescriptorMatcher> matcher = &matcher1;
Run Code Online (Sandbox Code Playgroud)

2.错误:

Conditional jump or move depends on uninitialised value(s)
==23559==    at 0x56585C0: ____strtod_l_internal (strtod_l.c:1659)
==23559==    by 0x5653FAE: strtod (strtod.c:70)
==23559==    by 0x41425B1: icv_strtod(CvFileStorage*, char*, char**) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559==    by 0x415875F: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559==    by 0x4158BA4: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559==    by 0x41593F7: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559==    by 0x41593F7: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv pointers memory-management

0
推荐指数
1
解决办法
1886
查看次数

如何在Objective-C中初始化对象

我不确定如何初始化Objective-C类中的各种属性.请假设我在你的答案中是Objective-C的新用户......

我有以下课程:

考试班

@interface Test : NSObject
@property (nonatomic, strong) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

TestManager类

@interface TestManager : NSObject
@property (nonatomic, strong) NSMutableArray *tests; // array of Test objects (array size unknown until runtime)
@end
Run Code Online (Sandbox Code Playgroud)

控制器类

@interface TestController : NSObject
@property (nonatomic, strong) TestManager *aManager;
-(void)initManager;
-(void)doSomething;
@end
Run Code Online (Sandbox Code Playgroud)

我想要一个像initManager被调用的方法:

-(void)initManager
{
    // how can I init the aManager which will have an array of Test objects
}
Run Code Online (Sandbox Code Playgroud)

它将自动分配一个对象数组,以存储在manager类中,这样我就可以执行以下操作:

-(void)doSomething
{
   NSString *name = ((Test *)[self.aManager.tests objectAtIndex:0]).name;
}
Run Code Online (Sandbox Code Playgroud)

我甚至不确定initManager是否是正确的使用方法 - …

memory-management allocation objective-c

0
推荐指数
1
解决办法
1万
查看次数

用C++检测堆损坏

我一直收到检测到Heap Corruption的错误.我在这里已经阅读了几个问题,但我无法在我的代码中找到导致这种情况的原因.我正在尝试创建一个2d数组,它将保存从文本文件中读取的矩阵.

// Create a 2d matrix to hold the matrix (i = rows, j = columns)
matrix = new int*[cols];

for(int i = 0; i <= cols; i++) {
    matrix[i] = new int[rows];
}

// Populate the matrix from the text file
for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        inputFile >> matrix[i][j];
    }
}
Run Code Online (Sandbox Code Playgroud)

我的析构函数是:

for(int i = 0; i <= cols; i++) {
    delete[] matrix[i]; …
Run Code Online (Sandbox Code Playgroud)

c++ heap memory-management

0
推荐指数
1
解决办法
185
查看次数

在JavaScript中,在未附加到DOM树的函数内创建的节点是否会使空间混乱?

我习惯于在顶部块中声明范围中的每个变量以获得代码可读性.我怀疑函数范围内未添加到文档正文的节点会使空间混乱,并降低性能.他们会怎么样?一般而言,在函数范围内创建的变量会发生什么?执行功能后它们会被销毁吗?我是否需要担心释放内存?在一个范围的最顶层块声明变量是一个好习惯,还是只在需要时或在某些条件为真时才在现场声明变量?这有助于提高运行时性能吗?

假设这样的函数:

function myfunc() {
    var someNode = document.createElement('div');
    if(someCondition) { // add the node only if some condition is true
        document.body.appendChild(someNode);
    }
Run Code Online (Sandbox Code Playgroud)

VS这样的功能:

function myfunc() {
    if(someCondition) { // create and add the node only if some condition is true
        var someNode = document.createElement('div');
        document.body.appendChild(someNode);
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript dom scope memory-management nodes

0
推荐指数
1
解决办法
39
查看次数

C#应用程序,监视内存消耗

有没有办法可以在我的C#应用​​程序中监视内存消耗?我想根据程序使用的内存量动态更改变量.

我有一些代码完成对数据库的查询,并在将数据写入文件之前暂时保存这些数据.我还有一些代码,允许用户手动更改数据从内存中转储到哪个点并写入文件,但我希望程序自动处理.

例如; 如果我的进程达到700,000K内存使用量(如从中查看Task Manager,然后递减整数并继续处理.

谢谢,埃里克

c# memory memory-management winforms

0
推荐指数
1
解决办法
1778
查看次数

分而治之是否能真正赢得增加的内存分配?

我刚刚编写了一些经典的分治算法,我提出了以下问题:(更多是好奇心)

不可否认,在许多情况下,分而治之算法比传统算法更快; 例如,在快速傅里叶变换中,它提高了从N ^ 2到Nlog2N的复杂度.然而,通过编码,我发现,由于"划分",我们有更多的子问题,这意味着我们必须创建更多的容器并在子问题上分配更多的记忆.考虑一下,在合并排序中,我们必须在每次递归中创建左右数组,而在快速傅里叶变换中,我们必须在每次递归中创建奇数和偶数数组.这意味着,我们必须在算法期间分配更多的内存.

所以,我的问题是,实际上,比如在C++中,当我们还必须增加内存分配的复杂性时,像分而治之类的算法真的会赢吗?(或者内存分配根本不需要运行时间,而且成本是零?)

谢谢你的协助!

c++ algorithm memory-management divide-and-conquer

0
推荐指数
2
解决办法
360
查看次数

如何释放返回的malloced字符串?

我有以下两个功能.函数get_string_data(line)mallocs一个字符串并返回它.后来我像这样使用它:

char *get_string_data(char *) {
    char *sec_tok, *result;
    Split *split;
    split = split_string(line, ' ');

    sec_tok = split -> tail;

    if (starts_with_char(sec_tok, '\"') && ends_with_char(sec_tok, '\"')) {
        result = (char *) malloc(strlen(sec_tok) + 1);
        strcpy(result, sec_tok);
        free(split);
        result++;
        *(result + (strlen(result) - 1)) = '\0';
        return result;
    }
    free(split);
    return NULL;
}

void handle_string_instr(char *line) {
    char* data = get_string_data(line);

    ...a few lines later, after I used the data...

    free(data);
    ... end of the world happens here...
} …
Run Code Online (Sandbox Code Playgroud)

c pointers memory-management

0
推荐指数
1
解决办法
595
查看次数

循环运行会导致内存泄漏

嗨所以我的应用程序中存在相当大的内存泄漏,我认为这是由我的Runnables造成的.这是我使用的Runnables骨架的一个例子:

    private Runnable randomAlienFire = new Runnable() {
       public void run() {
            /*A Bunch
               of computations
            */

            mainHandler.removeCallbacks(randomAlienFire);
            mainHandler.postDelayed(randomAlienFire, number );

       }
Run Code Online (Sandbox Code Playgroud)

当我切换活动时,我打电话mainHandler.removeCallbacksAndMessages(null);,thread.randomAlienFire = null;但我仍在泄漏整个活动.所以我的问题是,这个基本骨架中是否存在导致内存泄漏的问题?这可能是处理程序调用自身的事实吗?

android memory-management handler

0
推荐指数
1
解决办法
2295
查看次数

ARC和"复制"方法

我正在使用SBJson来解析JSON字符串.

像这样:

NSDictionary *dict = received_notification.object;
Run Code Online (Sandbox Code Playgroud)

我应该用吗?

NSString *name  = [[dict valueForKey:@"name"] copy];
Run Code Online (Sandbox Code Playgroud)

要么

NSString *name  = [dict valueForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)

我认为第一种方法复制NSString,之后可以发布dict.

但是对于第二个表达式"name"保留了对dict的引用,它无法释放.

我错了吗?

memory-management objective-c automatic-ref-counting

0
推荐指数
1
解决办法
153
查看次数