当前位置:  技术问答>linux和unix

sprintf函数的第一参数字符缓冲区为何分配空间不够,在linux运行也不出现内存错误?

    来源: 互联网  发布时间:2016-03-29

    本文导语:  代码: int main() {  char *buf=(char*)malloc(1);  int temp=10000;  sprintf(buf,"%d",temp);  printf("%sn",buf); return 0; } 我只给buf分配了一个字节的空间,显然不够把temp转成的字符格式都放下,为什么运行的时候没有报内存错误(如...

代码:
int main()
{
 char *buf=(char*)malloc(1);
 int temp=10000;
 sprintf(buf,"%d",temp);
 printf("%sn",buf);

return 0;
}
我只给buf分配了一个字节的空间,显然不够把temp转成的字符格式都放下,为什么运行的时候没有报内存错误(如段错误之类的)。
同样在vc6.0下,运行就出现了内存错误。
这是怎么回事?请各位指点。 

|
你只分配了一个字节,但写了4个字节进去了
是可以写进去,但会踩了别的内存空间

|
结果是随机的,不过就你这个来说,由于字节对齐的缘故,buf虽然是分配了一个字节,但后边会有3个字节
的空间是空闲的。你这样用倒奇妙的躲过了出错的机会。但你使用的空间再超过这些的时候,就会出现不可预知的错误了。

|
这是因为没有内存保护。

|
这好理解呀,被你糟蹋的内存的老公还没回来check呢。

|
呵呵,不可预知,没出错不等于没错

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个sprintf函数问题
  • sprintf()函数问题?谢谢
  • 函数sprintf,大家熟悉吗?
  • php sprintf函数用法 php浮点数格式
  • Java有没有C中的sprintf之类的函数?
  • php的sprintf函数的用法 控制浮点数格式
  • 请教有关 fork 和 sprintf 函数的问题
  • 关于GTK表格控件中sprintf函数的一个问题
  • php中sprintf与printf函数用法区别解析
  • 十进制转换为二进制,sprintf函数怎么不好使呢,高手看看
  • C++中sprintf()函数的使用详解
  • 基于C语言sprintf函数的深入理解
  • 写内核模块时有没有类似sprintf这样的方法
  • 程序判斷type與sprintf問題
  • 我的sprintf有错误,不知道什么问题。
  • 深入分析C中不安全的sprintf与strcpy
  • sprintf的问题
  • 如何在JAVA中实现类似VC中sprintf的功能
  • sprintf如何格式化64位的无符号整数
  • uclibc 9.27下的C问题(关于long,unsigned long,以及sprintf的问题)
  • 基于C++中sprintf的错误总结详解
  • 浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3