数据结构之存储位置

  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内存释放,合理设计算法,避免算法问题导致的内存无线增长,合理设置作用域。保证数据不会超过分配内存来避免指针越界。

相关推荐
f***R816 分钟前
HeidiSQL导入与导出数据
java
q***71013 小时前
Spring Boot(快速上手)
java·spring boot·后端
QxQ么么5 小时前
移远通信(桂林)26校招-助理AI算法工程师-面试纪录
人工智能·python·算法·面试
better_liang5 小时前
每日Java面试场景题知识点之-分布式事务处理
java·微服务·面试·springcloud·分布式事务
L***d6707 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
凌波粒7 小时前
Springboot基础教程(3)--自动装配原理/静态资源处理/欢迎页
java·spring boot·后端
likuolei7 小时前
XSL-FO 软件
java·开发语言·前端·数据库
凌波粒7 小时前
SpringBoot基础教程(2)--yaml/配置文件注入/数据校验/多环境配置
java·spring boot·后端·spring
S***26757 小时前
Spring Boot环境配置
java·spring boot·后端
6***83057 小时前
什么是Spring Boot 应用开发?
java·spring boot·后端