问题标签 [size-t]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - size_t 是字长吗?
是size_t
编译代码的机器的字长吗?
使用 g++ 进行解析,我的编译器将size_t
其视为long unsigned int
. 在调用编译器之前,编译器是否在内部选择了 的大小size_t
,或者size_t
实际上是在某个预处理器宏中将其类型定义stddef.h
为字长?
还是我偏离了轨道?
c - size_t 预处理器值的大小
出于教育目的,我正在 C 中创建哈希表的实现。
散列函数应该返回一个 size_t 散列。由于 size_t 的大小在不同的平台上是不同的(并且我想使用一个散列函数来散列 size_t 中的所有位),我想为不同的大小创建不同的散列函数。由于哈希函数将用作函数指针,我怀疑编译器不能像这样内联代码:
每次调用散列函数时都会使用两级间接。
这就是为什么我想做这样的事情:size_t (*hashFunc)(void* key, size_t size) = hash##sizeof(size_t);
而不是。只会使用一级间接。问题是 sizeof 运算符在 prepossessing 阶段不可用。
那么定义一个预处理器值的好方法是什么,它将在每个平台上扩展到正确的 size_t 大小?我想我可以检查预定义的宏,但我想知道是否有更好的方法。
c - 是否将 int 转换为 size-t 以避免数字溢出?
我已阅读grep 中的以下漏洞报告以及相关的提交,其中所有integer
和unsigned integer
都替换为size_t
.
我有一个简单的问题:是unsigned integer
通过size_t
避免数字溢出来替换(或其他类型的攻击?如果是为什么?(实际上我没有看到它发生了什么变化,因为我相信size_t
was的定义typedef unsigned int size_t;
)。
c++ - 错误:表达式必须具有 size() 的类类型
该代码试图确定两个字符串是否具有相同的模式。
问题: 我尝试了两次,第 1 行和第 2 行,但都没有成功
第 1 行,错误:类“...”没有成员“size_t”
第 2 行:错误:char * s2 表达式必须具有类类型
有任何想法吗?
ubuntu - 找不到一些手册页
Ubuntu 12.04...
几年前我有fedora,我在那里看到了以下内容的手册页......
我试过这个...
man unistd
但它没有找到它:(
我认为这些页面在 Ubuntu 中不存在。
尽管man stdio
有作品和其他手册页。
所以
- 如果 Ubuntu 没有这些页面,请告诉我如何下载它们
- 查看标准 typedef 手册页的命令是什么,即, ,
size_t
等pid_t
的手册页。off_t
clock_t
试过了man stddef
,没找到。。。
c++ - 如何检测分配给 size_t 的负数?
此声明在 g++ -pedantic -Wall(版本 4.6.3)中编译时没有警告:
不太明显的虚假是用 size_t 参数声明一个函数,并用一个负值调用它。这样的函数能否防止无意的否定论点(显示为无数的 quintillion,遵守 §4.7/2)?
不完整的答案:
只需将 size_t 更改为 (signed) long 就会放弃 size_t 的语义和其他优点。
将其更改为 ssize_t 仅仅是 POSIX,而不是标准。
将其更改为 ptrdiff_t 很脆弱,有时会损坏。
测试大值(高位设置等)是任意的。
c++ - 应该使用 size_t 或 ssize_t
在我的代码中,我不使用 int 或 unsigned int。我只将 size_t 或 ssize_t 用于便携式。例如:
因为strlen
,,……都用string
,所以我一般都用。我只在它可能是负面的时候使用。vector
size_t
size_t
ssize_t
但我发现:
无符号整数类型非常适合将存储视为位数组的用途。使用 unsigned 而不是 int 来获得更多位来表示正整数几乎从来都不是一个好主意。通过声明变量 unsigned 来确保某些值是正数的尝试通常会被隐式转换规则所挫败。
在C++ 编程语言一书中。
所以我很困惑。我错了吗?为什么 STL 不遵守书上的建议?
c++ - 投射 ssize_t 或 size_t
在我的项目中使用的源文件中,有ssize_t
和size_t
变量之间的比较:
我想摆脱警告:
但我不确定,我应该将哪个变量转换为另一个变量?
或者
什么更安全、更好、更清洁?谢谢
c - 对于任何字符串“char name[10]="test"”,strlen(name)+1 是否总是保证与 sizeof(name) 相同?
对于一个字符串name[]
,我们可以在我们的代码中不加思索地使用strlen(name)+1
和sizeof(name)
互换吗?它们不是一样的吗?我检查了一下,发现即使两者的返回类型都是相同的,size_t
。毕竟sizeof
将大小计算为字节的倍数并且一个字符占用一个字节,同时strlen()
计算字符数,不包括\0
由于我们必须添加 1 以使其与 的结果相等sizeof
。
因此,除非字符的大小不是 1 个字节,否则这两者不是可以互换且对于所有实际用途都相同吗?例如在分配动态内存时......
c++ - 何时/何地/为什么 size_t 不是 uint?
我一直因为使用uint
而不是.size_t
size_t
uint
是否有任何编译器实现size_t
实际上不是 a uint
?这种批评的依据是什么?