找出存储值的内存部分?

时间:2016-01-30 13:50:09

标签: c memory text stack heap

有没有办法使用Visual Studio 2015检查值在C内存(堆,堆栈,文本等)中的存储位置?

例如,在此代码中:

var tables = context.MyTables.SqlQuery("SELECT * FROM dbo.MyTable WITH(INDEX(MyIndex)) WHERE Type='FINISHED'").ToList();

找出存储数组名称,名称[0],静态名称等的位置

1 个答案:

答案 0 :(得分:1)

你不需要检查它;你知道的:

  • 自动变量在堆栈中;

  • 非零初始化(全局)变量位于DATA段中;

  • 零初始化(或未初始化)全局变量位于BSS中,扩展了DATA段;

  • 动态分配的内存位于HEAP段中。

  • 常量字符串可以在DATA段中,也可以在单独的(写保护的)TEXT段中,但这取决于编译器。

在您的示例中,name将位于DATA段中,而常量字符串位于TEXT段中。