相关疑难解决方法(0)

命令行参数驻留在哪里?

已知C语言中main函数的原型为int main(int argc, char **argv)。argv 数组指向的那些字符串驻留在哪里?它们位于哪个内存段?数据、栈还是堆?

谢谢。

c linux memory

5
推荐指数
1
解决办法
688
查看次数

常量局部变量数组在内存中用于'C'程序

我正在使用GCC 4.8.1,它似乎没有将const变量本地存储在DATA段的main中.下面是3个这样的程序的代码和内存映射:

代码1:

int main(void) 
{ //char a[10]="HELLO"; //1 //const char a[10] = "HELLO"; //2 
return 0; 
} 

MEMORY MAP FOR ABOVE: 
text     data    bss     dec     hex    filename 
7264     1688 1040   9992    2708   a.exe 
Run Code Online (Sandbox Code Playgroud)

代码2:

int main(void)
{
    char a[10]="HELLO";
    //const char a[10] = "HELLO";
    return 0;
}

MEMORY MAP FOR 2: 
text     data    bss     dec     hex    filename 
7280     1688    1040    10008   2718 a.exe 
Run Code Online (Sandbox Code Playgroud)

代码3:

int main(void)
{
    //char a[10]="HELLO";
    const char a[10] = "HELLO";
    return 0;
}

MEMORY MAP …
Run Code Online (Sandbox Code Playgroud)

c memory gcc

4
推荐指数
1
解决办法
1501
查看次数

C程序中变量的地址

#include <stdio.h>

main()
{
    int i = 5;
    printf("%d \n" , &i);
}
Run Code Online (Sandbox Code Playgroud)

重复执行上述程序会导致变量的地址不同i吗?

c

3
推荐指数
1
解决办法
200
查看次数

在C中声明全局变量是否会改变入口点?

举个例子.

#include "stdio.h"

int global_var=5;

int main ()
{
    int local_var=6;
    //some statements

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

如果main函数是唯一的入口点,那么声明和赋值何时global_var发生?

在相关的说明中,是global_var在堆还是堆栈中分配?另外,有没有办法从函数声明一个全局变量,同时尊重入口点?

c c++ scope memory-management global-variables

3
推荐指数
1
解决办法
111
查看次数

成员静态函数内的 C++ 静态变量

一般来说,我想知道成员函数的static局部变量存储在哪里?即,如果static变量仅在static函数内部使用,则该变量是否仅初始化一次?

请参考下面的代码

std::string const CONST1 = "const1";
std::string const CONST2 = "const2";
std::string const CONST3 = "const3";

class Test
{
  public:
    static const std::vector<std::string> GetSomeMap();
}

const std::vector<std::string> Test::GetSomeMap()
{
  static std::vector<std::string> SomeMap = boost::assign::list_of(CONST1)(CONST2)(CONST3);
  
  return SomeMap;
}
Run Code Online (Sandbox Code Playgroud)

通过上面的代码,声明为有优势SomeMapstatic?(我希望它只初始化一次。)

c++ static boost

2
推荐指数
1
解决办法
2450
查看次数

函数范围结束后内存中局部变量的持久性?

例如,如果我有一个小功能:

int sum(int a, int b)
{
   int result = a+b;
   return result;
}
Run Code Online (Sandbox Code Playgroud)

这里result是一个局部变量,根据我的理解,它应该只存在于函数的执行时间.该函数的调用者如何能够检索sum()函数的返回值,该函数只是局部变量的值result?只是想知道函数内声明的局部变量的值是如何返回给调用函数的.我知道这发生在堆栈中,但我想知道它是如何发生的.

c

1
推荐指数
1
解决办法
568
查看次数

内存如何确定变量的数据类型?

在此输入图像描述

假设我将此值存储在我的内存中,内存将如何确定这是字符串还是int .How数据类型存储在内存中

c memory assembly

1
推荐指数
1
解决办法
223
查看次数

C/C++中的静态作用域

在下面的代码中,2打印出来.

int x = 1;
int f(int y)
{
    return x;
}

int main() {
    x = 2;
    printf("%d", f(0));
}
Run Code Online (Sandbox Code Playgroud)

如果我们在C中有静态作用域,它会怎么样?为什么不1打印?

印花 2在这种情况下不是动态范围,是吗?

我认为在静态作用域中它应该使用最近的x到函数定义.

c c++ scoping dynamic-scope

1
推荐指数
1
解决办法
664
查看次数

存储在堆栈或堆中的结构

我有以下脚本:

typedef struct {
    uint8_t red;
    uint8_t green;
    uint8_t blue;
} color;

color c1;
color* c2 = malloc(sizeof(color));
Run Code Online (Sandbox Code Playgroud)

我想知道 c1 和 c2 的存储位置。我知道 malloc 存储在堆上,但是 c2 是一个指针并且那些存储在堆栈中?c1 是存储在堆上还是堆栈上?

c memory struct allocation

1
推荐指数
1
解决办法
3416
查看次数

缓冲区溢出不影响const变量?

我不太了解黑客,c,汇编,记忆和所有这些东西,所以我不能自己解决我的问题.

因此,缓冲区溢出溢出到其他变量地址并破坏它们.所以我测试了它确实如此.而且我认为如果它可以溢出常量变量缓冲区溢出必须超级供电并且我测试过,但它不会溢出const变量.

这是为什么?

int a;
char buffer[8];
Run Code Online (Sandbox Code Playgroud)

const int a;
char buffer[8];
Run Code Online (Sandbox Code Playgroud)

通过'buffer'的大小在变量'a'的地址前面有变量'buffer'的地址.在分配给内存时,const变量中有什么特殊的东西吗?

我的示例代码:

#include <stdio.h>
#include <string.h>

int main() {
    char buffer1[8];
    const int a=0;                      //vs int a=0;
    char buffer2[8];

    strcpy(buffer1,"one");
    strcpy(buffer2,"two");

    printf("Buffer 2    [%p]: %s\n",buffer2,buffer2);
    printf("a           [%p]: %d\n",&a,a);
    printf("Buffer 1    [%p]: %s\n",buffer1,buffer1);

    printf("\nCopy Buffer\n\n");
    strcpy(buffer2,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

    printf("Buffer 2    [%p]: %s\n",buffer2,buffer2);
    printf("a           [%p]: %d\n",&a,a);
    printf("Buffer 1    [%p]: %s\n",buffer1,buffer1);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++

0
推荐指数
1
解决办法
144
查看次数

malloc 和全局变量声明在 C 中将它们的变量分配到哪里?

在一个简单的 C 程序中,如果我malloc有一个指向变量或数组的点,就内存映射而言,这部分内存分配到哪里?我对计算机编程很陌生,所以我不确定不同的变量在内存中的存储方式不同。

此外,全局变量(例如int x = 5)将存储在内存中的何处?

最后,有没有关于 C 语言如何与底层硬件交互的材料?我在网上找到的都是和C语法有关的,但是我太菜了,看不懂编译器的书。

如果这不清楚,请告诉我。

c malloc memory-management

0
推荐指数
1
解决办法
2820
查看次数