问题列表 - 第39709页

内存预留和提交

我正在阅读<Windows via C/C++>,这里有一些引用.

创建进程并为其提供地址空间时,此可用地址空间的大部分是空闲的或未分配的.要使用此地址空间的一部分,必须通过调用VirtualAlloc在其中分配区域.分配区域的行为称为保留.

要使用保留的地址空间区域,必须分配物理存储,然后将此存储映射到保留区域.此过程称为提交物理存储.

保留区域后,需要先将物理存储提交到该区域,然后才能访问其中包含的内存地址. 系统从系统的页面文件中分配提交到区域的物理存储.

以下是几个问题:

  • 为什么在使用内存时我们需要遵循reserve-comit范式?即为什么我们需要遵循这个两步范式,而不是直接分配一些物理内存并使用它?

  • 如果从系统的分页文件中分配了提交到某个区域的物理存储,为什么我们需要RAM(听起来很荒谬)?在我看来,地址空间区域应该映射到RAM(通过分页机制),RAM页面应该由分页文件支持.

也许这个问题可以通过解释以下两个方面来回答:

  • 保留做什么?

  • 承诺做什么?

更新 - 1月2日下午2:48 11/23/2010

以下来自<Windows via C/C++ 5th edition>的引文让我感到困惑.

...最好将物理存储视为存储在磁盘驱动器上的页面文件中的数据.因此,当应用程序通过调用VirtualAlloc函数将物理存储提交到地址空间区域时, 实际上会从硬盘上的文件分配空间.

保留区域后,需要先将物理存储提交到该区域,然后才能访问其中包含的内存地址. 系统从系统的页面文件中分配提交到区域的物理存储.

那么,RAM在哪里?如果我将机器配置为没有页面文件怎么办?

memory windows paging

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

ListBox在使用主题后不水平显示项目

我正在使用列表框作为我的菜单项持有者

            <ListBox.ItemsPanel>

                <ItemsPanelTemplate>

                    <VirtualizingStackPanel Orientation="Horizontal" />

                    <WrapPanel></WrapPanel>

                </ItemsPanelTemplate>

            </ListBox.ItemsPanel>
Run Code Online (Sandbox Code Playgroud)

我可以在列表框中水平显示我的所有项目,但每当我使用任何主题时,它开始垂直显示项目(我在我的项目的Application.xaml中使用Microsoft的ExpressionLight.xaml)

任何解决方案,即使如何使用主题停止我的列表框(只有这一个).

问候,

wpf

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

从NSDate获取NSNumber的月份

我如何从NSDate对象获得NSNumber月份?不是当前月份而是对象月份

objective-c

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

最快的MySQL存储引擎,用于存储没有并发的数据

我正在使用mysql基础来存储来自大量数据(数亿个记录)的各种测试的结果.

我是基础的唯一用户,因此不存在任何并发问题.我还想使用简单的数学函数,如'avg','std'等

对于这样的任务,您认为最好的引擎是什么?
我现在正在使用InnoDB,在我看来有点沉重.

问候

纪尧姆

mysql storage-engines

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

IDEA停靠窗口布局

是否有可能改变IDEA中停靠工具窗口的布局方式?

目前,最底部的窗口占据所有水平空间,左右窗口不占用所有垂直空间(因为底部窗口).

是否可以安排布局,使左右对接窗口占据所有垂直空间,而底部窗口占用剩余的空间?

即:有这个:

+-----+---------------------------+-----+
|Tree |                           |Tree |
|     | Code                      |     |
|     |                           |     |
|     |                           |     |
|     |                           |     |
|     |---------------------------|     |
|     | Messages                  |     |
|     |                           |     |
+-----+---------------------------+-----+

而不是这个:

+-----+---------------------------+-----+
|Tree |                           |Tree |
|     | Code                      |     |
|     |                           |     |
|     |                           |     |
|     |                           |     |
+-----+---------------------------+-----+
| Messages                              |
|                                       |
+---------------------------------------+

configuration docking intellij-idea

14
推荐指数
2
解决办法
2465
查看次数

为什么私有成员变量可以被类实例更改?

class TestClass
{
    private string _privateString = "hello";
    void ChangeData()
    {
        TestClass otherTestClass = new TestClass();
        otherTestClass._privateString = "world";
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码在C#中编译,并且在PHP中等效,但有人可以解释为什么otherTestClass._privateString可以在这里更改?

我认为类的实例在任何情况下都不应该能够更改私有成员变量,并且尝试访问otherTestClass._privateString会因"保护级别"错误而导致"无法访问".

但事实并非如此,那么为什么在自己的类中实例化一个对象可以让你访问私有成员呢?如果它,这不会破坏封装到一定程度?还是我错过了一些明显的东西?

  • (我不是在问上面的班级设计是不是很好的做法,只是想知道它背后的理论.)

Edit - Thanks for the answers and comments. To clarify, I'm also interested in knowing if being able to do this is regarded as a positive feature, or if it's a necessary tradeoff for better compile-time checking/code clarity/because most other languages do it that way or whatever. It seems to me …

c# oop encapsulation instantiation private-members

27
推荐指数
2
解决办法
2244
查看次数

签名具有强名称的程序集,确定,但是如果某些第三方DLL没有签名怎么办?

我理解签署程序集背后的基本思想,但在使用Telerik或第二方DLL时遇到问题.我有一个使用我自己的.DLL的.exe,这些DLL依次使用企业库DLL和Telerik DLL.

我为我的所有项目提供了一个强大的名称.snk,但是在编译时,编译器解释说企业库DLL没有签名,这是有道理的.

我不想用te sn.exe -Vr命令关闭验证,甚至延迟签署我的项目.但那怎么会起作用呢?我很感激任何见解.

c# gac copy-protection snk assembly-signing

12
推荐指数
2
解决办法
6562
查看次数

如何知道<div>标记的滚动事件的结束

如果滚动结束已到达div标签,我需要触发一个函数.

    $("#page").bind("scroll",function(e){ //page is the ID of the div im scrolling
          if (document.body.scrollHeight - $(this).scrollTop()  <= $(this).height())
          {
             //the code here is called every time the scroll is happened i want to call     
             //this only when the scroll reaches the end of div
          }   
    });
Run Code Online (Sandbox Code Playgroud)

javascript jquery scroll

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

将第一个单词移到最后

我们有名字的数组:

array(
Robin Hood,
Little John,
Maid Marion,
Friar Tuck,
Will Scarlet
)
Run Code Online (Sandbox Code Playgroud)

每个项目中的第一个单词应移动到此项目的末尾.

我们应该得到这个:

array(
Hood Robin,
John Little,
Marion Maid,
Tuck Friar,
Scarlet Will
)
Run Code Online (Sandbox Code Playgroud)

我们应该怎么做?

如果我们使用它会更好 foreach()

谢谢.

php arrays foreach

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

从服务器发送大型JSON数据 - 我应该压缩吗?

我从我的服务器(使用PHP)发送JSON格式的大型数据集.我想降低带宽成本.我想知道:

  1. 我应该在发送数据之前gzip压缩JSON数据服务器端吗?
  2. 是否有一个javascript gzip解压缩库?

javascript php json http

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