标签: memory-management

iOS内存问题

我一直在使用以下代码,几乎没有任何问题,但今天Xcode开始抱怨它BIGTIME.在我发现错误/内存泄漏之前,我几乎疯了.Xcode表示"消息已发送到解除分配的实例".我评论了几行(发行版),它停止了崩溃.

问题是,我完全迷失在这里......我不应该释放那些以避免内存泄漏吗?我的目标是针对这个项目的iOS 4.0,所以手动内存管理是必须的.

+ (NSString*)reformatRule:(NSString*) ruleStr {
    NSString *bufRule = [[[NSString alloc] init] autorelease];
    NSString *buf = [[NSString alloc] init];
    char c = 0;
    NSString *value = [[NSString alloc] init];
    for(int i=0;i<[ruleStr length];i++){
        c = [ruleStr characterAtIndex:i];
        if([self isCharacterOrDigit:[NSString stringWithFormat:@"%c",c]]){
            buf = [buf stringByAppendingString:[NSString stringWithFormat:@"%c",c]];
        }else{
            DLog(@"says:%@",buf);
            value = [buf stringByReplacingOccurrencesOfString:@" " withString:@""];
            //[buf release];
            //buf = [[NSString alloc] init];
            buf = @"";
            if (![value isEqualToString:@""]) {
                if ([value isEqualToString:CONDITION_AND] || [value isEqualToString:CONDITION_OR]) {
                    bufRule = [bufRule stringByAppendingString:[NSString stringWithFormat:@"%@",value]];
                }else{ …
Run Code Online (Sandbox Code Playgroud)

memory-management objective-c ios

-1
推荐指数
1
解决办法
100
查看次数

删除矢量

如果a vector包含一堆使用new然后解除引用而分配的元素,那么在vector删除这些元素时会释放这些元素的内存吗?例如:

vector<Obj> a = *(new vector<Obj>());
a.push_back(*(new Obj()));
delete &a;
Run Code Online (Sandbox Code Playgroud)

Obj创建的新内容是否已取消分配?

c++ memory-management vector

-1
推荐指数
2
解决办法
192
查看次数

获取线程内存

美好的一天!我在获取java线程的内存使用方面遇到了麻烦.我的研究把我带到了ThreadMxBean库.根据javadocThreadMXBean#setThreadAllocatedMemoryEnabled,应该有一个getThreadAllocatedBytes允许获取线程内存的方法.但是,我找不到这种类的方法,而存在上述文档中描述的其他方法.

示例getCurrentThreadCpuTime()isThreadCpuTimeEnabled()显示在我的代码中.

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MalformedObjectNameException;
import javax.management.ReflectionException;

class TwoThreadsTest {
    public static void main (String[] args) throws Exception {
        new Coding("Jamaica").start();
        ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
        long b = threadBean.getCurrentThreadCpuTime();
        boolean bool= threadBean.isThreadCpuTimeEnabled();
        System.out.println(bool);
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading memory-management

-1
推荐指数
1
解决办法
1392
查看次数

意外的retainCount

通过简单的保留/释放方案查看此代码片段:

#import <Foundation/Foundation.h>

@interface SomeClass : NSObject
@end

@implementation SomeClass
@end

int main(int argc, const char * argv[])
{
    SomeClass *aClass = [[SomeClass alloc] init];
    NSLog(@"retainCount: %lu", [aClass retainCount]);

    [aClass retain];
    NSLog(@"retainCount: %lu", [aClass retainCount]);

    [aClass release];
    NSLog(@"retainCount: %lu", [aClass retainCount]);

    [aClass release];
    NSLog(@"retainCount: %lu", [aClass retainCount]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是结果输出:

2013-04-29 17:33:50.695 retainCount: 1
2013-04-29 17:33:50.697 retainCount: 2
2013-04-29 17:33:50.697 retainCount: 1
2013-04-29 17:33:50.698 retainCount: 1
Run Code Online (Sandbox Code Playgroud)

最后一个retainCount应为"0"或应用程序崩溃.为什么结果为"1"?!

memory-management objective-c retaincount

-1
推荐指数
1
解决办法
68
查看次数

在文件中搜索时出现分段错误

我正在编写一个包含"info"类型信息的简单数据库的代码.

这是我的代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>


#define NAME_LENGTH 20
#define EMAIL_LENGTH 15

struct info {
    char name[NAME_LENGTH];
    char email[EMAIL_LENGTH];
    int flag;
};

int createDB(char *name) {
    FILE * file = fopen(name, "w+b");
    return fclose(file);
}

FILE *openDB(char *name) {
    FILE* file = fopen(name, "r+b");
    if(file != NULL) return file;
    return NULL;
}

int closeDB(FILE *f) {
    return fclose(f);
}

struct info *get(FILE *file, int index) {
    struct info* temp;
    fseek(file, index*sizeof(struct info), SEEK_SET);
    fread(temp, 1, sizeof(struct info), file); …
Run Code Online (Sandbox Code Playgroud)

c memory-management segmentation-fault

-1
推荐指数
1
解决办法
61
查看次数

-1
推荐指数
1
解决办法
194
查看次数

"新"会导致功能中的内存泄漏吗?

假设我们想在C++中声明一个函数,我在其中声明一个局部变量,int p=new int [10];然后我做了一些操作,最后我做了一些操作return p;.

正如人们常说的那样,如果我们使用new,我们必须delete.但我想在这种情况下,我们不应该删除,对吧?否则,它根本不能返回p,对吧?但是,我也在考虑是否应该删除函数在测试时返回的项目int main().

c++ memory memory-leaks memory-management

-1
推荐指数
1
解决办法
509
查看次数

复制构造函数出错

我的程序在尝试为我的阵列分配新内存时保持染色.通过调用添加单词功能.任何帮助都会很棒!

完整代码下载@ http://www.johnsoncomputertechnologies.org/pgm2demo.zip

#include <iomanip>    //Standard IO Manipulators Library
#include <algorithm>
#include <iostream>   //Standard input/output library
#include <string>     //Standard string Library
#include <cassert>    //Error handeling Library
#include "pgm2.h"
using namespace std;
    dictionary::dictionary()
    {
        wordptr = new value_type[DICTONARY_CAPACITY];
        deffptr = new value_type[DICTONARY_CAPACITY];
        used = 0;
    }

    dictionary::dictionary(const dictionary& other)
    {
        value_type *wordptr;
        value_type *deffptr;
        wordptr = new value_type[other.capacity];
        deffptr = new value_type[other.capacity];
        used = other.used;
        capacity = other.capacity + 1;
        copy(wordptr, other.wordptr + used, other.wordptr);
        copy(deffptr, other.deffptr + used, other.deffptr);

    } …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management copy-constructor

-1
推荐指数
1
解决办法
75
查看次数

malloc中number对象的用法

我是编程的新手,我正在努力理解它们之间的区别

A = (char * ) malloc(sizeof(char)*n);
Run Code Online (Sandbox Code Playgroud)

A = (char * ) malloc(sizeof(char)); 
Run Code Online (Sandbox Code Playgroud)

要么

A = new char [n];
Run Code Online (Sandbox Code Playgroud)

A = new char;
Run Code Online (Sandbox Code Playgroud)

当我没有指定特定数据类型的对象数时,编译器分配给此指针的默认内存是多少.

当我宣布时

A = new char [n];
cout << A[n+1];
Run Code Online (Sandbox Code Playgroud)

它没有给我一个分段错误.

它应该不会给出分段错误,因为我试图访问超出为阵列分配的内存.

c c++ malloc memory-management new-operator

-1
推荐指数
1
解决办法
130
查看次数

C++中的内存管理?

我正在开发一个简单的车辆路径问题算法,我对内存管理有一点问题.所以我有以下课程

在这一个我存储订单的数据

Order::Order(int id, int idLoc, double xCoord, double yCoord, double demand,  int startTime, int endTime, int serviceTime) {
    this->id = id;
    this->idLoc = idLoc;
    this->xCoord = xCoord;
    this->yCoord = yCoord;
    this->demand = demand;
    this->startTime = startTime;
    this->endTime = endTime;
    this->serviceTime = serviceTime;
}

Order::~Order() {
    // TODO Auto-generated destructor stub
}
Run Code Online (Sandbox Code Playgroud)

在这一个中,我存储了一个订单列表,这些订单代表了在分发期间服务的一系列客户.

Route::Route(int idRoute,Vehicle *vehicleRoute) {
    id = idRoute;
    vehicle = vehicleRoute;
    demandRoute = -1;
    serviceTimeRoute =-1;
    earliestTimeRoute =-1;
    latestTimeRoute = -1;
    serviceDistanceRoute = -1;

    orders = new std::deque<Order>; …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks memory-management

-1
推荐指数
1
解决办法
103
查看次数