鱼C论坛

 找回密码
 立即注册
查看: 1399|回复: 2

[已解决]typedef和内存浪费

[复制链接]
发表于 2019-6-23 10:59:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char (*string)[1073741824];
int main(int argc, char const *argv[])
{
    string str = "hello world. C language";//这里会不会造成内存浪费
    printf("%s\nstrlen = %d", str, strlen(str));
    return 0;
}
----------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-efcabpzv.ne3 --stdout=Microsoft-MIEngine-Out-izw5pvjk.r0n --stderr=Microsoft-MIEngine-Error-00tr0bdo.3xi --pid=Microsoft-MIEngine-Pid-2ediibw0.1uq --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
hello world. C language
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-eo2fmebd.hod --stdout=Microsoft-MIEngine-Out-ymy0kpvm.nzo --stderr=Microsoft-MIEngine-Error-q1j1so3z.55y --pid=Microsoft-MIEngine-Pid-i2xvi1ja.atg --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
hello world. C language
strlen = 23

E:\Administrator\Documents\My C>
=======================================================
如题:这样定义的str字符串,会不会有内存浪费的嫌疑
最佳答案
2019-6-23 11:21:39
实质上typedef char (*string)[1073741824]; 在底层等同于typedef char (*string); ,只是表达的意义不同而已

或者上边typedef看不懂的话最简单的例子就是
char *str = "hello world. C language";

这三者在实现机制上都是等价的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-23 11:03:36 | 显示全部楼层
本帖最后由 newu 于 2019-6-23 11:06 编辑

口误,不会浪费的,因为他无论多大只是一个指针而已,占4字节,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-23 11:21:39 | 显示全部楼层    本楼为最佳答案   
实质上typedef char (*string)[1073741824]; 在底层等同于typedef char (*string); ,只是表达的意义不同而已

或者上边typedef看不懂的话最简单的例子就是
char *str = "hello world. C language";

这三者在实现机制上都是等价的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 21:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表