printf(" ")中的字符串占用内存空间吗?

cir2633 2010-01-19 10:05:29
最近在搞一个dos下的工控机程序, 发现一个小问题
程序里有很多gotoxy(70,1);textattr(0x4e);cprintf(" Stoped! "); 这样的语句, 为的是在屏幕上打印某些状态

我在程序某处添加一行: gotoxy(70,1);textattr(0x1f);cprintf("WaveTesting"); 编译正常通过, 然后在dos命令行下输入主程序名,回车之后就假死,

然后我删掉gotoxy(70,1);textattr(0x1f);cprintf("WaveTesting");, 再编译, 然后运行, 一切正常

请问,增加cprintf("1111111111111111")这样的语句会增加内存占用吗?
我觉得"1111111111111111111"会在内存的常量存储区占用空间, 不知道我的想法对不对
...全文
497 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dos5gw 2010-04-01
  • 打赏
  • 举报
回复
printf和cprintf两个函数是不一样的,,,
dos5gw 2010-03-19
  • 打赏
  • 举报
回复
alt+o,
可以看一下bc的优化选项里有没有string这样的选项
dos5gw 2010-03-19
  • 打赏
  • 举报
回复
BC31貌似是有这样的问题
机智的呆呆 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cir2633 的回复:]
比如我写一个函数如下

float calcPID(float target,float curr_Temp){
    ...
    if(...){
        gotoxy(70,1);textattr(0x1f);cprintf("...........");
    }
    ...
    return dVol;
}

然后main会在合适的时候调用这个函数
那么"..........."这个字符串是存储在内存的哪个部分?
这块区域是程序刚运行就已经分配了? 还是当调用函数calcPID时才给分配的呢 ?

[/Quote]
这个看编译器的具体实现,"..........."可以在编译的时候分配好空间,cprintf("...........");时传这个字符串的地址值,也可以在cprintf("...........");重新建立一个"..........."字符串,这就意味重新分配空间了。
cir2633 2010-01-19
  • 打赏
  • 举报
回复
比如我写一个函数如下

float calcPID(float target,float curr_Temp){
...
if(...){
gotoxy(70,1);textattr(0x1f);cprintf("...........");
}
...
return dVol;
}

然后main会在合适的时候调用这个函数
那么"..........."这个字符串是存储在内存的哪个部分?
这块区域是程序刚运行就已经分配了? 还是当调用函数calcPID时才给分配的呢 ?
arong1234 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cir2633 的回复:]
引用 1 楼 arong1234 的回复:
内存当然会占,不过这点内存怎么会造成假死,你应该查其他因素(例如那个textattribute是不是合法


我觉得也是,这点内存不至于假死
但是textattr(0x1f)这句是从程序别处粘贴复制来的,其他的printf都正常
真的犯迷糊了
[/Quote]
没理由瞎怀疑是不好的,不过这种东西太老了,估计你很难找到帮助的
机智的呆呆 2010-01-19
  • 打赏
  • 举报
回复
MS"1111111111111111111"在WINNT的系统储存在常量存储区,其他的系统不一定,比如win95啥的就存在一个可读写的区域,估计dos下也存在一个可读写的区域吧,不管存储哪个地方占内存是肯定的了。
cir2633 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
内存当然会占,不过这点内存怎么会造成假死,你应该查其他因素(例如那个textattribute是不是合法

[/Quote]
我觉得也是,这点内存不至于假死
但是textattr(0x1f)这句是从程序别处粘贴复制来的,其他的printf都正常
真的犯迷糊了
jernymy 2010-01-19
  • 打赏
  • 举报
回复
同意1楼的,那些字符串再多也不过几十个字节,不会发生啥问题的了,应该是别的地方除了问题,可以跟踪查查。
arong1234 2010-01-19
  • 打赏
  • 举报
回复
内存当然会占,不过这点内存怎么会造成假死,你应该查其他因素(例如那个textattribute是不是合法

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧