Tag: size t

我们可以在C中更改size_t的大小吗?

我们可以在C中更改size_t的大小吗?

什么是“目标平台上最大可能对象的大小”,以size_t表示

我正在阅读C / C ++中有关size_t文章http://web.archive.org/web/20081006073410/http://www.embedded.com/columns/programmingpointers/200900195 (通过Stackoverflow找到的链接)。 从文章引用: 类型size_t是一个typedef,它是某些无符号整数类型的别名,通常是unsigned int或unsigned long,但可能甚至是unsigned long long。 每个标准C实现都应该选择足够大的无符号整数 – 但不要大于所需的 – 来表示目标平台上最大可能对象的大小。 如何确定机器上最大可能对象的大小? 什么影响最大对象的大小(除了处理器)? 欢迎详细解释链接。

如何从字符串中获取size_t?

我需要从用户输入中获取数组大小。 我将输入存储为size_t似乎很自然,但是找到一个合适的strto…()函数我找不到任何东西。 我刚刚使用了strtoull() ,因为unsigned long long保证至少为64位,而且我strtoull()使用C99。 但我想知道从字符串中获取size_t的最佳方法是什么 – 例如,在ANSI C中。 编辑: 为了澄清,我不希望字符串长度! 用户将以字符串的forms输入大缓冲区的大小,例如”109302393029″ 。 我需要得到这个数字并存储为size_t 。 当然我可以使用strtol()甚至atoi() ,但它看起来像一个笨拙的黑客(例如, size_t可能包含比int更大的值,我希望用户能够在可寻址空间中输入任何值) 。

C中size_t类型的malloc参数的限制是什么? Docs说它有UINT_MAX的上限,但我不能超越INT_MAX

我想分配一个2.9GB的char数组 database = (char*) malloc((2900 * 1000000 * sizeof(char))); 这给出了整数溢出警告, malloc返回NULL 。 malloc参数的类型为size_t ,根据文档的类型为unsigned int 。 所以max应该是UINT_MAX ,至少是2.9GB。 但是,如果我尝试分配超过MAX_INT则malloc失败。 这是否意味着我的系统上的size_t是int类型? 我该如何检查? 我看了看 /usr/include/stdlib.h 和 ./lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h 但是找不到size_t的定义。 非常感谢

C size_t和ssize_t负值

size_t声明为unsigned int因此它不能表示负值。 那么ssize_t是size_t的签名类型吗? 这是我的问题: #include #include int main(){ size_t a = -25; ssize_t b = -30; printf(“%zu\n%zu\n”, a, b); return 0; } 为什么我得到: 18446744073709551591 18446744073709551586 结果? 我知道使用size_t这可能是因为它是一个无符号类型,但为什么我的ssize_t也得到了错误的结果?

向size_t添加或指定整数文字

在CI中,可以看到许多代码将size_t变量添加或赋予整数文字。 size_t foo = 1; foo += 1; 这里发生了什么转换,是否会发生size_t “升级”为int然后转换回size_t ? 如果我在最大程度上,那还会环绕吗? size_t foo = SIZE_MAX; foo += 1; 这是定义的行为吗? 它是一个无符号类型size_t ,它添加了一个signed int (可能是一个更大的类型?)并转换回size_t 。 有签名整数溢出的风险吗? 写一些像foo + bar + (size_t)1而不是foo + bar + 1这样有意义吗? 我从来没有看到这样的代码,但我想知道如果整数促销是麻烦的话是否有必要。 C89没有说明size_t将如何排名或者究竟是什么排名: 结果的值是实现定义的,其类型(无符号整数类型)是在头中定义的size_t。

它在llvm中相当于size_t

某些系统库(如malloc strlen)需要或返回size_t作为参数。 LLVM IR与这些function交互的正确选择是什么? 选择是编译器的任务吗? LLVM IR是否具有size_t类型?

Objective-C运行时:为class_addIvar添加大小和对齐的内容?

Objective-C Runtime提供了class_addIvar C函数 : BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types) 我对size和alignment什么alignment ? 我正在添加一个类型为UITextPosition *的实例变量,但是没有UITextPosition对象在范围内。 对于size ,我可以只做sizeof(self) ,其中self是UITextField的子类吗? 即,我可以假设UITextPosition对象与UITextField对象的大小相同吗? 如何alignment ?

GCC linaro编译器抛出错误“unknown type name size_t”

我正在使用GCC Linaro编译器来编译我的代码。 它从libio.h抛出错误unknown type name size_t 。 它包含在stdio.h 。 在我的代码中,我只包括stdio.h 。 可以请任何人如何解决此错误。

typedef是否可以包含size_t的签名类型?

对于可以包含全部size_t值的签名类型,是否存在标准(或MSVC专有)typedef? 即在64位系统上,它将是一个128位有符号整数。