Tag: 堆栈

这些对象是堆栈上还是堆上的引用?

如果有人能告诉我我是否理解,我会很感激: class X { A a1=new A(); // reference on the stack, object value on the heap a1.VarA=5; // on the stack – value type A a2=a1; // reference on the stack, object value on the heap a2.VarA=10; // on the stack – value type } 另外, a1和a2引用都在堆栈上,而它们的“对象”值在堆上。 但是VarAvariables呢,还是纯粹的值types呢? class A { int VarA; }

堆栈上局部variables分配的顺序

看看这两个function: void function1() { int x; int y; int z; int *ret; } void function2() { char buffer1[4]; char buffer2[4]; char buffer3[4]; int *ret; } 如果我在gdb function1()中断,并打印variables的地址,我得到这个: (gdb) p &x $1 = (int *) 0xbffff380 (gdb) p &y $2 = (int *) 0xbffff384 (gdb) p &z $3 = (int *) 0xbffff388 (gdb) p &ret $4 […]

如何改变一个.NET程序的堆栈大小?

我有一个程序,执行recursion调用20亿次和堆栈溢出。 我做了改变,然后它仍然需要40Krecursion调用。 所以我需要几个MB堆栈内存。 我听说堆栈大小默认为1MB。 我尝试在网上search。 有人说去视觉工作室去属性 – >连接器………但我找不到它。 有谁知道如何增加它? 另外我想知道如果我可以在我的C#程序中的某个地方设置它? PS我使用的是32位的winXP和64位的win7。

Java默认堆栈大小

我明白每个线程都有自己的stack 。 原始types和引用保留在堆栈上,并且没有对象保留在堆栈上。 我的问题是: 多less钱可以增长? (就像参数Xms和Xmx ) 我们可以限制其增长吗? 堆栈是否有默认的最小值和最大值? 垃圾收集如何在堆栈上工作?

Java / Android的 – 如何打印出一个完整的堆栈跟踪?

在Android(Java)中,我如何打印完整的堆栈跟踪? 如果我的应用程序崩溃nullPointerException或者什么,它打印出一个(几乎)完整的堆栈跟踪,如下所示: java.io.IOException: Attempted read from closed stream. com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream. at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545) at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488) at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417) at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313) at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243) at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164) Caused by: java.io.IOException: Attempted read from closed stream. at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148) at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159) at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212) at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81) at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:64) at android.net.http.AndroidHttpClient.getUngzippedContent(AndroidHttpClient.java:218) at com.android.music.sync.api.MusicApiClientImpl.createAndExecuteMethod(MusicApiClientImpl.java:312) at com.android.music.sync.api.MusicApiClientImpl.getItems(MusicApiClientImpl.java:588) at com.android.music.sync.api.MusicApiClientImpl.getTracks(MusicApiClientImpl.java:638) […]

为什么堆栈通常会向下扩展?

我知道,在我个人熟悉的架构(x86,6502等)中,堆栈通常会向下增长(即每个物品被压入堆栈导致递减的SP,而不是递增的)。 我想知道这个历史的理由。 我知道在一个统一的地址空间中,在数据段的另一端(比如说)启动堆栈是很方便的,所以如果双方在中间相互碰撞只会有问题。 但是,为什么堆栈传统上得到顶部? 特别是考虑到这与“概念”模式相反吗? (请注意,在6502架构中,堆栈也向下增长,即使它被限制在一个256字节的页面上,这个方向的select似乎是任意的)。

在C中,大括号是作为一个堆栈框架吗?

如果我在一组新的花括号中创build一个variables,那么这个variables是从右花括号中的栈上popup的,还是挂起直到函数结束? 例如: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } 在code that takes a while的code that takes a while会不会占用内存?

在堆栈/堆创build对象?

以下代码在堆栈上创build一个对象: Object o; 在堆上创build对象时,我们可以使用: Object* o; o = new Object(); 而不是: Object* o = new Object(); 当我们将堆对象创build分成两行并在第二行调用构造函数( o = new object() )时,这是否意味着在第一行( Object* o )指针是在堆栈上创build的? 所以Object o把对象放在堆栈上,而Object* o把指针放在堆栈上的未来对象上? 我的第二个问题涉及到两行代码是否在类之外被调用。 我最近读( 全局内存pipe理在C堆栈或堆? )全局variables不包含在堆栈/堆,但实际上是另一部分内存? 如果是这样的话, Object* o创build一个指针,该指针位于内存的另一部分,并指向堆对象?

ServiceStack应该是MVC应用程序中的服务层还是应该调用服务层?

我正在创build一个MVC网站,并打算创build一个Web API,以便在网站内部和第三方使用。 从MVC控制器中,我将调用一个服务层,它将包含业务逻辑,在域模型上运行,执行validation,进行基础设施外部服务调用等。服务层反过来将调用存储库以进行任何数据库交互。 现在,我喜欢ServiceStack的外观,并打算将它用于Web API–它似乎比ASP.NET MVC 4 Web API更成熟。 我的问题是,是否应该将ServiceStack API调用到我的服务层上面,类似于MVC控制器,还是应该将它作为服务层,为Web客户端和MVC控制器提供服务?

一个无语言的语言如何工作?

我听说过无语的语言。 不过,我不知道这样的语言会如何实施。 有人可以解释吗?