标签: assign

Objective-C:内存是否泄漏,多次分配自动释放?

如果我做了以下事情,这会导致内存泄漏吗?

SomeClass* tmp;
NSDate* thetmpdate;

tmp = [[[SomeClass alloc] init] autorelease];
thetmpdate = [NSDate date];
// Do something long with tmp and date

tmp = [[[SomeClass alloc] init] autorelease];
thetmpdate = [NSDate date];
// Do something long with tmp and date

tmp = [[[SomeClass alloc] init] autorelease];
thetmpdate = [NSDate date];
// Do something long with tmp and date
Run Code Online (Sandbox Code Playgroud)

memory-leaks objective-c autorelease assign

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

为指针赋值

如果我有以下例子:

int *x;
x = func(a);
Run Code Online (Sandbox Code Playgroud)

对于声明:x = func(a);,我们是否说我们要回复一个地址x?或者,我们究竟如何阅读它?

编辑:是否有资格说我们正在返回指针x?如果是这样,你能解释一下这是如何完成的吗?我的意思是,我们如何返回指针?

c++ pointers assign

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

R,使用字符过滤(子集化)数据并相应地分配名称?

我有一个数据集raw.data.2010,需要几个步骤与不同的动物物种进行子集化.我还需要在每个过滤过程后相应地命名它们.我写了一个简单的代码如下:

#Creating reproducible data######
site=rep(list("Q", "R", "S", "T"), each=500)
grid=sample(1:2, size=2000, replace=TRUE)
spp=rep(list("A", "B", "C", "D", "E"), each=400)
fate=sample(1:5, size=20000, replace=TRUE)
sex=rep(list("M","F"), each=2000)
weight=sample(85:140, size=2000, replace=TRUE)

raw.data=as.data.frame(cbind(site, grid, spp, fate, sex, weight))

### main codes#####
spp=c("A", "B", "C", "D", "E")
    for (i in spp){
        name=paste(i, "raw", sep=".", collapse="")
        filter=paste("select",i, sep="", collapse="")
        assign(filter, raw.data$spp==i)
        assign(name, raw.data[get(filter),])
    }
Run Code Online (Sandbox Code Playgroud)

我检查过滤器,他们没有问题.但是最后一行不起作用,所以我调用的所有子集化数据都返回了NA.哪里错了?谢谢.

编辑:嗨,谢谢大家的意见.我编辑了我的代码,所以它是可重复的.基本上我想首先过滤我raw.dataspp.然后,我可以继续按照加入更多的过滤器将它们分组site,grid,fate...等等.我需要能够单独访问过滤后的数据,以便我可以操作它们供以后使用,例如.计算不同性别或年龄组的体重和其他测量值.我希望能够打电话A.raw,A.Q.data后来.

因为我想分析不同级别的数据(例如人口级别,个人级别,站点/网格级别),并能够根据我的需要对其进行汇总/拆分.这就是这段代码的目的.希望我的解释不会让你感到困惑.

r subset assign

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

IOS保留,分配

我观察到以下行为.

取了两个属性变量.

@property (nonatomic, retain) NSString *stringOne;
@property (nonatomic, assign) NSString *stringTwo;
Run Code Online (Sandbox Code Playgroud)

在.m文件中写下代码..

 NSMutableString *localstring= [[NSMutableString alloc] initWithString:@"test"];
 self.stringOne = localstring;
 NSLog(@"localstring = %d", [string retainCount]);
 NSLog(@"string one retain count = %d", [self.stringOne retainCount]);
 self.stringTwo = localstring;
 NSLog(@"localstring = %d", [localstring retainCount]);
 NSLog(@"string two  retain count = %d", [self.stringTwo retainCount]);
Run Code Online (Sandbox Code Playgroud)

由于alloc,localstring保留计数为1.现在我给了self.stringOne = localString.

由于stringOne的retain属性,localstring的保留计数将变为2.现在我给了self.stringTwo = localString.

即使在这里,localstring保留计数也会增加1.请注意,我已将assign属性赋予stringTwo.实际上,localstring或stringTwo的保留计数不应该增加1,因为它是assign属性.如果我错了,请纠正我.

谢谢Jithen

iphone memory-management retain ios assign

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

结构不可分配?

我有一个结构:

struct Handle 
{
public:
    const unsigned long Id;
    const std::type_index Index;
    Handle() : Id(-1), Index(std::type_index(typeid(Event))){}
    Handle(unsigned long id, std::type_index index) : Id(id), Index(index) {}
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将它分配给我得到的变量时

错误10错误C2582:'eventHandler :: Handle'中的'operator ='函数不可用

为什么?(我正在使用结构,因为据我所知,它们作为数据类型处理,可以从函数返回而不用new创建.这是正确的吗?)

c++ struct assign

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

用NA值替换负值

NA在表中有正,负和值,我需要用值替换负值NA.正数和NA值应保持在表中.我的数据集类似于下面的数据集:

NO. q
1   NA
2   NA
3   -133.6105198
4   -119.6991209
5   28.84460104
6   66.05345087
7   84.7058947
8   -134.4522694
9   NA
10  NA
11  73.20465643
12  -69.90723514
13  NA
14  69.70833003
15  65.27859906
Run Code Online (Sandbox Code Playgroud)

我试过这个:

if (q>0) {
    q=NA
} else {
    q=q
}
Run Code Online (Sandbox Code Playgroud)

conditional r missing-data assign

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

C修改函数中值的最佳方法

我用Java开发了几年,现在我想学习C,我注意到了一些差异.

在Java中,当我想从函数返回一些东西时(例如,我会写的读取用户输入)

String s;
s = new Scanner(System.in).nextLine(); 
Run Code Online (Sandbox Code Playgroud)

在CI会写

char s[20];
scanf("%d", name);
Run Code Online (Sandbox Code Playgroud)

区别在于,在Java中,函数返回一个可以直接赋值给变量的值,而在C中,函数将变量名称作为参数(分别是指向变量的指针).

我注意到了许多C函数.当我编写自己的函数时,我应该像在Java中习惯一样,还是应该使用从函数中赋值/返回值的C风格?

c java return function assign

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

C++:分段错误(核心转储)在Linux OS上

我试图使用g ++ 5.1编译和执行这个小的c ++代码,它编译得很好,当我执行它时,linux我得到这个错误消息:" Segmentation fault (core dumped)".

但是相同的代码在osx上正确运行但在linux上没有运行:

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

struct node {
 std::string data;
};

int main() {
  struct node * node = (struct node * )
  malloc(sizeof(struct node));

  node->data.assign("string");
  // node->data = "string" --> same issue

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

我尝试了一个简单的assigne(node-> data ="string"),但我遇到了同样的问题请帮忙!

c++ memory pointers allocation assign

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

Java通过引用传递与listNode问题

我有一堂课:

class ListNode {
     int val;
     ListNode next;
     ListNode(int x) { val = x; }
}
Run Code Online (Sandbox Code Playgroud)

打印LinkedList的函数是:

public static void printLinkedNode(ListNode l){
        while(l != null){
            System.out.print(l.val+" ");
            l = l.next;
        }
        System.out.println(" ");
    }
Run Code Online (Sandbox Code Playgroud)

在我的主要功能中,我创建了一个名为test的ListNode:

ListNode test = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
Run Code Online (Sandbox Code Playgroud)

如果我做答:

ListNode fast = head, slow = head;
fast = fast.next.next;
printLinkedNode(head); // I get 1->2->3->4
Run Code Online (Sandbox Code Playgroud)

如果我做B:

ListNode fast = head, slow = head;
fast.next = fast.next.next;
printLinkedNode(head); …
Run Code Online (Sandbox Code Playgroud)

java assign

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

分配运算符更改分配对象的值

我实现了一个类来处理一些外部功能(例如,另一个DLL的功能)。这个函数给了我一个可以用作句柄的整数。这是我的代码的重要部分:

MyClass
{
public:
    MyClass() { 
        handle = getHandlefromExternalFunction();
    }
    ~MyClass {
        if(handle>0)
            freeHandleFromExternalFunction(handle);
    }
    MyClass& operator=(MyClass& other) {
        freeHandleFromExternalFunction(handle);
        handle = other.handle
        other.handle = 0; //Is this a bad idea?
    }
private:
    int handle;
}
Run Code Online (Sandbox Code Playgroud)

在我的主要功能中,我有一个myClass对象。在某些时候,我正在使用赋值运算符来更改对象的值:

MyClass object;
//some code
object = MyClass();
Run Code Online (Sandbox Code Playgroud)

分配后,创建的对象MyClass()将立即销毁,因为它超出了范围。但是我不想freeHandleFromExternalFunction()被调用handle,因为我在分配的对象中使用它。因此,我在赋值运算符中更改了赋值对象的值handle = 0。我的问题是:这是个坏主意吗?有谁能更好地解决我的问题?

c++ destructor assign

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