标签: memory-management

C++ - 将auto_ptrs放在shared_ptr向量中

我有一个shared_ptrs的向量.我正在把auto_ptrs放进去.这没关系还是事情会破裂?

Room.hpp:

vector<shared_ptr<Item>> items;
void addItem(auto_ptr<Item>);
Run Code Online (Sandbox Code Playgroud)

主要:

room.addItem(auto_ptr<Item>(new Item(...)));
Run Code Online (Sandbox Code Playgroud)

c++ memory-management smart-pointers

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

将逻辑(虚拟)地址转换为物理地址

我有如下页表process1:

在此输入图像描述

假设寻呼系统使用16bit地址和页面大小4k

我想将逻辑地址16000转换为物理地址.

我对这个话题有点新意,所以对我很轻松:

部分解决方案:地址16000适合3页表中的单元格编号,所以我想我需要处理该单元格及其存储的框架 - 2.

我现在如何找到偏移量和物理地址?

谢谢

memory-management process virtual-memory

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

iPhone iOS处理内存警告最常用的方法是什么?

我很惊讶iOS 5.1没有像我预期的那样管理内存.当设备运行很多应用程序时,似乎iOS不会在后台杀死内存占用应用程序,但也向我自己的应用程序发送内存警告.

例如,显示UIImagePicker在两个测试设备上崩溃了应用程序.双击主页键并查杀某些后台应用程序可防止应用程序收到内存警告并崩溃.

如果iOS不能为我释放内存,我会徘徊,是否可以显示某种警报视图,通知用户内存不足并且某些后台任务必须被杀死?

我不知道如何处理这类事件 - iOS是否需要时间来清理一些内存(而应用程序会响应内存警告)?

iphone memory-management ios5.1

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

为什么NSString不需要分配和初始化内存?

可能重复:
NSString分配和初始化

我想知道为什么有些对象不需要初始化并分配内存.我读到这个:为什么在使用objective-c之前不需要初始化某些对象?他们说该方法已date初始化并为其分配了内存today.但是,如果我刚刚写了NSString *str = @"Hello";它仍然初始化和分配?

memory memory-management allocation initialization objective-c

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

如何在C中分配32字节对齐的内存

在一个采访样本中遇到了这个问题.在如何仅使用标准库分配对齐的内存中已经回答了16字节对齐的分配

但是,我有一个特定的问题,关于用于将最后4位归零的掩码.已使用此掩码"~0F",使得结果地址可被16整除.对于32字节对齐/可分割,应采取哪些措施来实现相同的目的?

c memory-management

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

具有类范围的动态分配堆栈存储器

一些编译器支持C++扩展,从而可以在堆栈上动态分配内存.例如,g++支持alloca()以及VLA.所有这些扩展都伴随着警告,即动态分配的内存在调用函数范围的末尾被"释放".(编辑:为了澄清,我使用'deallocated'周围的引号,因为实际发生的是编译器递减/递增堆栈指针,因此为什么alloca()需要编译器支持.)这意味着alloca()在类的构造函数中使用分配的内存被释放一旦构造函数返回.

在构造函数经历一些非常重要的步骤来确定要分配多少内存的类中,这种限制变得难以处理.该类的用户必须在构造类的函数中分配内存,暴露一些可能不应该暴露的内部.此外,将解决方法放在我的代码中以便能够使用alloca()或使用VLA通常是不方便的.

你能想出一些方法来绕过这个限制,以便我可以使用alloca(),VLA或其他语言扩展,以便内存可以在类中分配并具有类范围吗?

c++ stack memory-management alloca variable-length-array

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

内存分配本地初始化字符串数组

假设,我写了一个函数如下:

void foo()
{
   char *strArr[] = {"AA", "BB", "CC"};
   ...
}
Run Code Online (Sandbox Code Playgroud)

strArr将被分配的位置?什么时候会被初始化?

出于某种原因,我记得这样的数组将被分配在静态存储空间中,而不是在堆栈上并在程序启动时初始化,就好像我会在它之前编写"静态"一样.这是假记忆吗?

c memory variables memory-management initialization

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

重新分配自动释放的对象

我正在构建一个有三种不同尺寸的益智游戏.加载的图像取决于拼图的大小.为简单起见,我称之为小/中/大.当我加载我的视图时,我告诉它拼图的大小,我正在调用loadImages方法.

我有一个像这样设置的属性:

@property (nonatomic, retain) UIImage *solidSquare;
Run Code Online (Sandbox Code Playgroud)

所以在我的loadImages方法中,我有:

self.solidSquare = [[[UIImage alloc] initWithContentsOfFile:solidPath] autorelease];
Run Code Online (Sandbox Code Playgroud)

solidPath是根据拼图大小动态确定的.

现在,如果用户切换到不同的拼图大小,我会在游戏开始时再次调用loadImages.我该如何处理这种记忆情况?我觉得我需要在loadImages方法的开头调用它.

[self.solidSquare release];
Run Code Online (Sandbox Code Playgroud)

我呢?我如何评估它是否是第一次装载,或者我是否需要?

memory-management objective-c autorelease ios

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

Fortran可分配的数组生命周期

说我有以下代码:

program test
  call foo
  call foo
contains
  subroutine foo
    integer(8),dimension(:),allocatable:: var1
    allocate(var1(10))
    ...
    return
  end subroutine foo
end
Run Code Online (Sandbox Code Playgroud)

变量var1会被分配两次吗?(我猜是).如果为每个呼叫分配,第一次呼叫期间分配的内存是否会空闲?

fortran memory-management dynamic-memory-allocation fortran90 fortran95

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

常量,文字和全局变量在哪里获得空间

我最近了解到可以使用指针更改c中常量的值,但字符串文字不可能.可能的解释在于,常量和其他字符串在空间中的可修改区域中被分配空间,而字符串文字在空间(可能是代码段)中进入不可修改的区域.我编写了一个显示这些变量地址的程序.输出也显示出来.

#include <stdio.h>
int x=0;
int y=0;

int main(int argc, char *argv[])
{
    const int a =5;
    const int b;
    const int c =10;
    const char *string = "simar";   //its a literal, gets space in code segment
    char *string2 = "hello";
    char string3[] = "bye"; // its array, so gets space in data segment
    const char string4[] = "guess";
    const int *pt;
    int *pt2;

    printf("\nx:%u\ny:%u Note that values are increasing\na:%u\nb:%u\nc:%u Note that values are dec, so they are on stack\nstring:%u\nstring2:%u …
Run Code Online (Sandbox Code Playgroud)

c memory memory-management

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