数据结构之存储位置

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

相关推荐
兆子龙5 分钟前
前端哨兵模式(Sentinel Pattern):优雅实现无限滚动加载
前端·javascript·算法
后端AI实验室31 分钟前
我把一个生产Bug的排查过程,交给AI处理——20分钟后我关掉了它
java·ai
凉年技术3 小时前
Java 实现企业微信扫码登录
java·企业微信
狂奔小菜鸡3 小时前
Day41 | Java中的锁分类
java·后端·java ee
hooknum4 小时前
学习记录:基于JWT简单实现登录认证功能-demo
java
CoovallyAIHub4 小时前
9个视觉语言模型工厂实测:Qwen 87.9%碾压全场,你的显卡能跑哪个?
算法
SparkX开源AI知识库4 小时前
手摸手带你安装OpenClaw并对接飞书
算法·架构
程序员Terry4 小时前
同事被深拷贝坑了3小时,我教他原型模式的正确打开方式
java·设计模式
NE_STOP4 小时前
MyBatis-缓存与注解式开发
java
一语07164 小时前
3分钟搞懂深度学习AI:实操篇:卷积层
人工智能·算法