首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP内存溢出?

PHP内存溢出?
EN

Stack Overflow用户
提问于 2009-12-19 05:10:06
回答 2查看 156关注 0票数 1

我现在正在构建一个php框架...再来一次。

我有一个名为config的类。

它很简单,它的名字是这样的:

代码语言:javascript
复制
$conf = config::get('general');

$conf现在是一个充满配置好处的数组。

类框架如下所示:

代码语言:javascript
复制
final class config {

private static $configs = array();

public static function get($name) {

return self::$configs[$name];

}

}

假设$configs数组已经填充,并且有一个“通用”键。

这个“通用”键保存的数组大小正好是1兆字节。

比方说我打电话给

代码语言:javascript
复制
config::get('general');

10倍于不同的变量。之后不会对任何变量进行编辑...这是否意味着我有10个变量,每个变量都包含1兆字节,或者10个变量指向1兆字节?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-19 05:17:43

如果您不修改它们,则只有一个。

但是php不是一种可以依赖任何特定行为的语言;-)

刚刚尝试过:

代码语言:javascript
复制
<?php

printf("%10d\n",memory_get_usage());
$a = array_fill(0,30000,'oh');
printf("%10d\n",memory_get_usage());
$b = $a;
printf("%10d\n",memory_get_usage());
$b[] = '';
printf("%10d\n",memory_get_usage());

输出:

代码语言:javascript
复制
    325524
   2256916
   2256980
   4188316
票数 4
EN

Stack Overflow用户

发布于 2009-12-19 05:14:06

我的理解是,在你写它的时候,你会得到10个数组,每个1MB。

如果您使用&传入一个按引用的变量并返回一个指针,或者在函数名前面使用&返回一个按引用的返回值,您就可以做您想做的事情。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1930702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档