是存储在磁盘中的数组还是只是在ram中?

时间:2016-01-19 17:14:36

标签: c arrays

我是编程和计算机科学的新手。

  • 当我有一个数组时,它是在RAM中还是必须在磁盘中 太?例如,我有:

    int array[100];

它只在RAM中吗?如果它也在磁盘中,我怎样才能将它实现在RAM中?

  • 如果磁盘中有东西它没有实现为数组?这绝对是一个档案吗?

2 个答案:

答案 0 :(得分:2)

当你有一个数组

function login($url,$data){
$fp = fopen("cookie.txt", "w");
fclose($fp);
$login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($login, CURLOPT_TIMEOUT, 40000);
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($login, CURLOPT_POST, TRUE);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
ob_start();
return curl_exec ($login);
ob_end_clean();
curl_close ($login);
unset($login);
}
echo login("website", "email=secret@this.se&passwd=secret&store_id=secret");

它只驻留在RAM中,即系统的物理内存。

如果您获取数组,它可以在磁盘中,并将其写入某个文件。

如果磁盘中存在某些内容,则可以将其读取,然后将其存储在某个阵列中。然后在那个时间点,它将在RAM中。

如果在阵列中进行了一些更改,则只有RAM中的副本会发生变化。要使更改反映在磁盘中,您必须将其写回。

答案 1 :(得分:1)

答案可能会有点复杂。

如果您正在使用现代多任务操作系统,那么您几乎肯定会使用 virtual memory 系统。在这样的系统下,您的代码在连续的虚拟地址空间中运行,根据需要将其映射到物理RAM。此虚拟地址空间被分解为页面,并且根据当前正在运行的程序的需要,将各个页面从RAM交换到磁盘并再次返回。这就是你可以让多个程序同时运行的方式,而不用担心它们踩到彼此的数据。它还允许程序运行,就好像它有一个完整的32位或64位地址空间,即使你只有物理RAM中的一小部分。

这种交换活动发生在幕后,对你来说是透明的;您不必在代码中考虑它。我通常将该虚拟地址空间称为“存储”或“内存”,保留RAM以引用物理内存硬件。

如果您正在使用不使用虚拟内存的系统,那么显然所有内容都存在于RAM中;物理内存和磁盘之间没有交换(至少,不在操作系统的部分;如果需要,你可以自己进行交换)。在这种情况下,“存储”,“存储器”和“RAM”都意味着相同的事情。

尽管如此,你的阵列只存在于记忆中;一旦你的程序退出,那个数组就不复存在了。您可以将阵列的内容保存到磁盘文件中,但这与磁盘上的阵列本身不同。