社区
C++ 语言
帖子详情
一个申请内存空间的问题
sharpeyes
2006-06-22 01:52:31
请问一下:
char szBuffer[sizeof("-32767")*8 + sizeof("65535")*2];
[ ]中的内容怎么解释,它的用意是什么???
...全文
172
7
打赏
收藏
一个申请内存空间的问题
请问一下: char szBuffer[sizeof("-32767")*8 + sizeof("65535")*2]; [ ]中的内容怎么解释,它的用意是什么???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fireseed
2006-06-22
打赏
举报
回复
没啥,调试器没有编译器行为的问题。sizeof是在编译器就全部确定了,括号里是什么,它就会测什么,如果是个字符串,它自然就会去测自符串的内存长度,如果是指针,就会测指针所占内存的长度。但是编译好了以后,字符串常量全部都进入了进程的另一个只读区,代码只能过能指针地址对这些数据进行访问,而调试器则只可能使用这些指针,所以调试器认为sizeof("-32787")测的是一个指针的长度。测试如下代码就知
const char *p = "-32767";
cout << sizeof(p) << endl;
cout << sizeof("-32767") << endl;
houdy
2006-06-22
打赏
举报
回复
看来我又无知一次,在VS2003下是68????
那位达人解释一下??
houdy
2006-06-22
打赏
举报
回复
sizeof("-32767")*8 + sizeof("65535")*2
"-32767": 这是一个字符串常量,实际上是一个指向内存空间(常量区)的指针,所以:
sizeof("-32767")*8 = 4 * 8 = 32 --> IA32系统下
实际上,由于编译器的优化(常量替代),在编译阶段完成后,sizeof("-32767")*8 + sizeof("65535")*2已经被 4*8 + 4*2 = 40替代了。
PS:求字符串长度的函数是strlen:
>strlen("-32767") = 6
>strlen("65535") = 5
>sizeof("-32767")为7
>sizeof("-65535")为6
>7*8+6*2=68
>char szBuffer[68];
>就是计算常字符串长度,别忘了结尾的'\0'就好了。
这样的形式才是你说的情况:
char charArray[] = "-32767";
sizeof(charArray) = 7;
dreamXren
2006-06-22
打赏
举报
回复
sizeof("-32767")*8 + sizeof("65535")*2
应该等价于
sizeof(char*) * 8 + sizeof(char*) * 2
=40
调试时也是这样。
奇怪就在这里,输出的是68。。。
明天再仔细看看。
ztony007
2006-06-22
打赏
举报
回复
变态的代码,鄙视
lumber
2006-06-22
打赏
举报
回复
char szBuffer[];
这是声明一个char数组.
[]里的值表示数组的大小.
fdimim
2006-06-22
打赏
举报
回复
sizeof("-32767")为7
sizeof("-65535")为6
7*8+6*2=68
char szBuffer[68];
就是计算常字符串长度,别忘了结尾的'\0'就好了。
C语言动态
申请
内存空间
C语言动态
申请
内存空间
为什么要动态内存
申请
1.定义数组的时候数组的长度是预先定义好的,在整个程序中固定不变; 2.但是在实际的编程中,往往会发生这种情况,即所需的
内存空间
取决于实际输入的数据,而无法预先...
动态
申请
存储空间
“动态存储空间”是指程序运行期间,根据用户输入的信息决定分配空间的大小。需要对单元进行释放,分别用new 和delete
申请
和释放空间。 1.
申请
new 单目运算符。使用时,通常将它
申请
到的首地址赋值给指针变量...
malloc
申请
内存
问题
问题
描述 最近发现了
一个
越界有概率会造成段错误的
问题
。具体
问题
是这样的,首先malloc...于是,做了
一个
的实验,查看
申请
的内存和实际可使用的内存是否一致的,使用malloc_usable_size可以查看内存的实际可用空间。 #
链表和动态
申请
内存空间
????欢迎来到C语言的世界 ????博客主页:卿云阁 ????欢迎关注????点赞????收藏⭐️留言???? ????本文由卿云阁原创!...0️⃣✨✨✨动态
申请
内存空间
✨✨✨ C程序使用malloc、realloc等内存
申请
函数在堆上分配和释
用C语言编写
一个
申请
内存的程序
虚拟内存指的是,程序向操作系统所
申请
的
内存空间
,这个空间不一定会使用,这个空间也可以比服务器实际可提供
内存空间
大。 实际内存是程序所
申请
的内存页与物理内存中的物理页进行一一映射的
内存空间
,这个空间永远...
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章