标签: allocation

如何分配动态类型对象

我在objective-c中看到了很多关于动态类型的讨论.但我还没有看到任何我认为应该是的例子.

假设我有一个泛型函数应该兼顾两个对象(一个被分配而另一个被释放),并且调用对象将它自己附加到新分配的对象.两者都继承自class0

如果你认为它会解释一些东西,请随意解释这个你想要的!

如果在运行时选择了类,我如何处理参数列表(?现在是一个占位符)如何在运行时之前分配一个没有定义类的对象?

-(void) juggle:(?*)objclass1:(?*)objclass2{

? temp = [? alloc] init];
objclass1 = temp;
[temp release];

[objclass2.view removefromsuperview];
[self.handle insertsubview:objclass1.view];

}
Run Code Online (Sandbox Code Playgroud)

allocation dynamic objective-c

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

动态分配C结构?

我想动态分配一个C结构:

typedef struct {
    short *offset;
    char *values;
} swc;
Run Code Online (Sandbox Code Playgroud)

'offset'和'values'都应该是数组,但它们的大小在运行时才会被识别.

如何为我的struct和struct的数组动态分配内存?

c c++ memory allocation

7
推荐指数
5
解决办法
2万
查看次数

如何在C中编写线程安全,高效,无锁的内存分配器?

如何在C中编写线程安全,高效,无锁的内存分配器?我的意思是:

  1. 快速分配和解除分配

  2. 最佳内存使用(最小浪费和无外部碎片)

  3. 最小的元数据开销

c memory performance multithreading allocation

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

释放动态分配的内存

在C++中,当您在堆上创建一个新变量时,如下所示:

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

你可以告诉C++使用delete这样回收内存:

delete a;
Run Code Online (Sandbox Code Playgroud)

但是,当程序关闭时,是否会自动释放分配了新内存的内存?

c++ memory allocation dynamic

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

我应该检查malloc()是否成功?

应该在每个malloc()之后检查它是否成功?malloc()是否有可能失败?那么会发生什么?

在学校我们被告知我们应该检查,即:

arr = (int) malloc(sizeof(int)*x*y);
if(arr==NULL){
    printf("Error. Allocation was unsuccessful. \n");
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

有什么做法?我可以这样做吗:

if(!(arr = (int) malloc(sizeof(int)*x*y))
    <error>
Run Code Online (Sandbox Code Playgroud)

c malloc error-handling runtime-error allocation

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

如何在scala中进行内存分配

我们知道,与java不同,scala将所有东西都作为对象.

例如我们有 -

object A{
    val arg1=1
    def myFun(arg2:Int)=arg1
}

class A{  
    val arg1=1
    def myFun(arg2:Int)=arg1
}

trait A{
    val arg1=1
    def myFun(arg2:Int)=arg1
}
Run Code Online (Sandbox Code Playgroud)
  • 现在因为scala中的所有内容都是一个对象所以内存分配将如何发生?
  • 除了引用变量之外,一切都会在堆中获得内存吗?
  • 在java中创建类实例时,该类中的方法和变量将获取堆中的内存.Singleton Objects如何在这里发生?
  • 如果一切都在堆中,它会不会影响性能?
  • 与Java一样,Memory分为5个部分,即Heap,Stack,MethodArea等.在scala中,内存分配是如何进行的?

java memory memory-management scala allocation

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

自定义malloc()实现头设计

我试图在C中编写一个自定义分配器用于调试目的(作为练习),我将使用单个链表来使用First Fit算法将自由列表保存在一起.我在下面展示了我想在"空内存节点"中创建的结构.

如何在内存的前几个字节处编写头块(一个特定的联合),我得到(我使用malloc()来初始获得一块内存)以便剩余的字节是空闲的?

这是我正在使用的联盟:

/*Define Header Structure for proper alignment*/
union header {
struct{
    union header* next;
    unsigned size ; /*Make it size_t*/
}s; 
double dummy_align_var;
};

-------------------------------------------------------------------------------
|Next        |Size of  |16Byte| User is concerned only about |16Byte|         |
|Free Memory |Allocated|Header| this portion  of memory      |Footer|Checksum |
|Address     |Block    |Picket| and has no knowledge of rest |Picket|         |
-------------------------------------------------------------------------------
|-------Header---------|      ^Address Returned to user
                              ^------User Requested Size-----^
^-------------Memory Obtained From The Operating System-----------------------^
*/
Run Code Online (Sandbox Code Playgroud)

[编辑]根据提供的建议更改块结构.

c memory malloc memory-management allocation

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

仪器如何自动停止工作?

我尝试通过仪器监控分配.

但是,当我跑到某一点,发送一些jabber msg时,仪器会自动停止工作.

我想知道它是如何停止的.

应用程序中是否有任何代码可以阻止仪器?

iphone debugging allocation instruments

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

如何在C语言中将字符串添加到字符串数组中

所以我正在重新认识C,这个概念让我特别困惑.

目标是创建一个动态分配的字符串数组.我已完成此操作,首先创建一个空数组并为输入的每个字符串分配适当的空间量.唯一的问题是,当我尝试实际添加一个字符串时,我得到一个seg错误!我无法弄清楚为什么,我有预感,这是因为我的strcpy函数没有看错.

我在这个网站上看了一遍详尽的答案,我找到了帮助,但不能完全达成协议.您将提供的任何帮助将不胜感激!

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

int main()
{
  int count = 0; //array index counter
  char *word; //current word
  char **array = NULL;


  char *term = "q"; //termination character
  char *prnt = "print";

  while (strcmp(term, word) != 0)
{
  printf("Enter a string.  Enter q to end.  Enter print to print array\n");
  // fgets(word, sizeof(word), stdin); adds a newline character to the word.  wont work in this case
  scanf("%s", word);

  //printf("word: %s\nterm: %s\n",word, term);

  if (strcmp(term, word) …
Run Code Online (Sandbox Code Playgroud)

c memory arrays string allocation

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

为什么编译器在向量满时不会尝试分配连续的内存(如果可能)?

std::vector满了,分配新的内存.从我读到的,新容量以几何级数增长(但这与问题无关),然后旧信息被复制到新的内存区域,旧的信息被释放.

基于这个假设,我的问题是:

  1. 为什么编译器不会试图在我们的末尾看到是否有足够的连续免费使用内存,只在我们的末尾std::vector分配一部分std::vector,并且不浪费时间复制?

  2. 人们是否试图实现这一点,但是决定它不值得这样做?(平均/总是)

  3. 是否还有其他更微妙的原因导致这种情况没有发生?

c++ memory-management allocation vector

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