数据结构之存储位置

  1. p 和 "hello,world"存储在内存哪个区域?( ) (鲁科安全)

int main()

{

char *p = "hello,world";

return 0;

}

p是栈区,"hello,world"是.ro段

  1. 一个由C/C++编译的程序,会将占用的内存分为几个部分:堆、栈、代码段、数据段、BSS段。请问以下程序中的变量a、b、c、d,分别被存在内存的哪个部分?(泰华智慧)

int a = 0; // 全局变量

char *b;// 全局变量

int main()

{

int c; //局部变量

static char d = 'a'; //static变量

b = malloc(10);

*b = d;

return 0;

}

a:.data段 b.bss段 c.栈区 d.data段

  1. 如下代码:变量g_iA,g_iB,g_iC,iD,iE, iF, piG,iH 分别在内存中的什么区( ) (H3C)

int g_iA = 1; //.data

int g_iB; //.bss

static int g_iC = 1; // .data

void func1(){

static int iD=2; // .data

iD++;

int iE=2; //栈区

iE++;

}

void func2(){

int iF=3; //栈区

int *piG = (int*) malloc(4); //堆区

}

int main(){

int iH = 100; //栈区

}

  1. 有关内存的思考题 (山东山大电力技术有限公司,登虹科技,昆腾微电子)

void GetMemory(char *p)

{

p =(char *)malloc(100);

}

void Test(void)

{

char *str=NULL;

GetMemory(str);

strcpy(str,"hello world");

printf(str);

}

请问运行 Test 函数会有什么样的结果?

str 仍然是 NULL ,然后尝试使用 strcpy 复制字符串到 NULL 指针,通常程序崩溃。

char * GetMemory(void)

{

char p1[] = "hello world"; //char *p = "hello world"

return p1;

}

Void Test(void)

{

char *str=NULL;

str = GetMemory();

printf(str);

}

请问运行 Test 函数会有什么样的结果?

GetMemory 函数返回一个指向局部数组 pl 的指针。这个数组在函数返回后会失效,因此返回的指针指向的是一个未定义的值。

void GetMemory(char **p,int num)

{

*p = (char *)malloc(num);

}

void Test(void)

{

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello world");

printf(str);

}

请问运行 Test 函数会有什么样的结果?

能正常打印 hello world

void Test (void)

{

char *str = (char *)malloc(100);

strcpy(str,"hello");

free(str);

if(str != NULL)

{

strcpy(str, "world");

printf(str);

}

}

请问运行 Test 函数会有什么样的结果?

可以正常打印world

  1. 堆和栈的区别是什么? (矩阵软件)
    1. 增长方向不同。
    2. 管理分配速度不同。
    3. 空间大小不同。
    4. 频繁的使用堆会产生大量的碎片,而栈则不会。

什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?(山大华天,智洋创新)

内存泄漏:如果没有适时释放被动态分配的内存,会导致内存泄露问题。未释放的内存一直占用系统资源,使得系统变慢并最终导致崩溃。

解决方法:即使使用free内存释放,合理设计算法,避免算法问题导致的内存无线增长,合理设置作用域。保证数据不会超过分配内存来避免指针越界。

相关推荐
代码笔耕2 分钟前
写了几年 Java,我发现很多人其实一直在用“高级 C 语言”写代码
java·后端·架构
txinyu的博客6 分钟前
结合游戏场景解析UDP可靠性问题
java·开发语言·c++·网络协议·游戏·udp
一路向北North7 分钟前
springboot基础(85): validator验证器
java·spring boot·后端
过河卒_zh156676617 分钟前
情感型AI被“立规矩”,AI陪伴时代进入下半场
人工智能·算法·aigc·生成式人工智能·算法备案
1.14(java)18 分钟前
掌握数据库约束:确保数据精准可靠
java·数据库·mysql·数据库约束
Codeking__22 分钟前
Redis——value的数据类型与单线程工作模型
java·数据库·redis
人道领域23 分钟前
【零基础学java】(等待唤醒机制,线程池补充)
java·开发语言·jvm
wefg126 分钟前
【算法】动态规划
算法·动态规划
名字不好奇26 分钟前
在C++中 如何实现java中的Stream
java·c++
alonewolf_9928 分钟前
Tomcat整体架构深度解析:从设计精髓到实战应用
java·架构·tomcat