问题标签 [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.

0 投票
6 回答
4540 浏览

c++ - size_t 是字长吗?

size_t编译代码的机器的字长吗?

使用 g++ 进行解析,我的编译器将size_t其视为long unsigned int. 在调用编译器之前,编译器是否在内部选择了 的大小size_t,或者size_t实际上是在某个预处理器宏中将其类型定义stddef.h为字长?

还是我偏离了轨道?

0 投票
4 回答
3083 浏览

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 大小?我想我可以检查预定义的宏,但我想知道是否有更好的方法。

0 投票
4 回答
597 浏览

c - 是否将 int 转换为 size-t 以避免数字溢出?

我已阅读grep 中的以下漏洞报告以及相关的提交,其中所有integerunsigned integer都替换为size_t.

我有一个简单的问题:是unsigned integer通过size_t避免数字溢出来替换(或其他类型的攻击?如果是为什么?(实际上我没有看到它发生了什么变化,因为我相信size_twas的定义typedef unsigned int size_t;)。

0 投票
3 回答
935 浏览

c++ - 错误:表达式必须具有 size() 的类类型

该代码试图确定两个字符串是否具有相同的模式。

问题: 我尝试了两次,第 1 行和第 2 行,但都没有成功

第 1 行,错误:类“...”没有成员“size_t”

第 2 行:错误:char * s2 表达式必须具有类类型

有任何想法吗?

0 投票
1 回答
323 浏览

ubuntu - 找不到一些手册页

Ubuntu 12.04...

几年前我有fedora,我在那里看到了以下内容的手册页......

我试过这个...

man unistd

但它没有找到它:(

我认为这些页面在 Ubuntu 中不存在。

尽管man stdio有作品和其他手册页。

所以

  • 如果 Ubuntu 没有这些页面,请告诉我如何下载它们
  • 查看标准 typedef 手册页的命令是什么,即, ,size_tpid_t的手册页。off_tclock_t

试过了man stddef,没找到。。。

0 投票
2 回答
8211 浏览

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 很脆弱,有时会损坏。

测试大值(高位设置等)是任意的。

0 投票
2 回答
118513 浏览

c++ - 应该使用 size_t 或 ssize_t

在我的代码中,我不使用 int 或 unsigned int。我只将 size_t 或 ssize_t 用于便携式。例如:

因为strlen,,……都用string,所以我一般都用。我只在它可能是负面的时候使用。vectorsize_tsize_tssize_t

但我发现:

无符号整数类型非常适合将存储视为位数组的用途。使用 unsigned 而不是 int 来获得更多位来表示正整数几乎从来都不是一个好主意。通过声明变量 unsigned 来确保某些值是正数的尝试通常会被隐式转换规则所挫败。

在C++ 编程语言一书中。

所以我很困惑。我错了吗?为什么 STL 不遵守书上的建议?

0 投票
2 回答
6907 浏览

c++ - 投射 ssize_t 或 size_t

在我的项目中使用的源文件中,有ssize_tsize_t变量之间的比较:

我想摆脱警告:

但我不确定,我应该将哪个变量转换为另一个变量?

或者

什么更安全、更好、更清洁?谢谢

0 投票
2 回答
5798 浏览

c - 对于任何字符串“char name[10]="test"”,strlen(name)+1 是否总是保证与 sizeof(name) 相同?

对于一个字符串name[],我们可以在我们的代码中不加思索地使用strlen(name)+1sizeof(name) 互换吗?它们不是一样的吗?我检查了一下,发现即使两者的返回类型都是相同的,size_t。毕竟sizeof将大小计算为字节的倍数并且一个字符占用一个字节,同时strlen()计算字符数,不包括\0由于我们必须添加 1 以使其与 的结果相等sizeof

因此,除非字符的大小不是 1 个字节,否则这两者不是可以互换且对于所有实际用途都相同吗?例如在分配动态内存时......

0 投票
1 回答
1516 浏览

c++ - 何时/何地/为什么 size_t 不是 uint?

我一直因为使用uint而不是.size_tsize_tuint

是否有任何编译器实现size_t实际上不是 a uint?这种批评的依据是什么?