找出存储在内存的哪一部分中的值?
Find out in which part of the memory a value is being stored?
有没有办法使用 Visual Studio 2015 检查值在 C 内存中的存储位置(堆、堆栈、文本等)?
例如在这段代码中:
char *day(int n) {
static char *name[] = {
"error", "monday", "tuesday", "wednesday",
"thursday", "friday","saturday", "sunday"
};
找出数组名称、名称[0]、静态名称等的存储位置
您不需要检查它;你知道:
自动变量在栈上;
非零初始化(全局)变量在数据段中;
零初始化(或未初始化)的全局变量在BSS中,扩展了DATA段;
动态分配的内存在 HEAP 段中。
常量字符串可能位于 DATA 段或单独的(写保护)TEXT 段,但这取决于编译器。
在您的示例中,name
将在 DATA 段中,常量字符串在 TEXT 段中。
有没有办法使用 Visual Studio 2015 检查值在 C 内存中的存储位置(堆、堆栈、文本等)?
例如在这段代码中:
char *day(int n) {
static char *name[] = {
"error", "monday", "tuesday", "wednesday",
"thursday", "friday","saturday", "sunday"
};
找出数组名称、名称[0]、静态名称等的存储位置
您不需要检查它;你知道:
自动变量在栈上;
非零初始化(全局)变量在数据段中;
零初始化(或未初始化)的全局变量在BSS中,扩展了DATA段;
动态分配的内存在 HEAP 段中。
常量字符串可能位于 DATA 段或单独的(写保护)TEXT 段,但这取决于编译器。
在您的示例中,name
将在 DATA 段中,常量字符串在 TEXT 段中。