- 主题:c++果然是门邪恶的语言!!
--
FROM 183.195.5.*
【 在 jjfz 的大作中提到: 】
: 理解数组只是地址偏移就行,a[1] 写成 1[a]都可以的
:
这个我倒是知道。只是报这个错,哎。。,并不是在赋值的时候报错,而是在析构的时候报错。且类似问题,报错不同
--
FROM 183.195.5.*
【 在 jjfz 的大作中提到: 】
: 你用tcmalloc,说不定就是赋值时crash了
: 默认allocator分配内存时,预留前面8字节记录大小信息
: -1正好写到这个数据,析构时数据不对,自然崩掉
: ...................
没有emplace_back那一行,赋值时就会崩掉
--
FROM 183.195.5.*
【 在 z16166 的大作中提到: 】
: 邪恶的是人吧
: 正常谁会写个负的下标。虽然能编译过去。
不一定是写的啊, 可能是计算出来的. 今天写堆排序, 忘记 size()返回的是uint64, 当成int 来使用 然后
((size_type)0 - 1) / 2 当成0了, 其实是-1, 就这样对-1下标取值了.
--
FROM 183.195.5.*
【 在 z16166 的大作中提到: 】
: 那还是人的问题,哈哈
: 你可以把关键数组/类的operator[]重载一下,加上越界判断
:
跟语言也有关啊, 如果用java定位就不会那么痛苦了. 几行代码踩两个坑
--
FROM 183.195.5.*
【 在 z16166 的大作中提到: 】
: 有些语言无论如何都帮你检查下标是否越界,付出了一定的性能开销。
: c/c++给了你自由度,要性能并且保证不会越界的地方可以不检查,要安全就检查,决定权在码农手里。
:
这倒是,不过门槛也确实提高了不少
--
FROM 183.195.5.*
【 在 beijing2duck 的大作中提到: 】
: 这是不了解vector的基本实现与使用造成的,标题结论错误
按这种说法来推理,所有吐槽c++的都不应该吐槽
--
FROM 112.65.48.*
【 在 gates2020 的大作中提到: 】
: 大神 你不是征婚版常客嘛? 想不到是C++大神阿
:
晕,你认错人了吧..我是偶尔回下帖子啊,还有我不是大神..菜鸡一只
--
FROM 183.195.15.*
【 在 z16166 的大作中提到: 】
: 没咋去征婚版啊
: 毛的大神,为了5万分努力灌水,快了
:
噗哈哈,我们一本正经的回复,其实层主为了攒积分,随机回的
--
FROM 183.195.15.*
【 在 niukou23 的大作中提到: 】
: std::vector重载[]符号中的是这个类型:size_type
: it is a typedef for std::size_t, which itself is usually a typedef for unsigned int or unsigned long long
: 它是个无符号型的,不是你想象中的-1。。。
: ...................
我知道这个, 我用的是 int idx = (vec.size() - 1) / 2), m 就成了-1了
--
FROM 183.195.15.*