由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++debug遇到的问题
相关主题
请问C++如何初始化类时就传入一个数组参数[合集] C语言bit操作问题,急!
程序中的各个变量/数组的内存地址是否会混在一起?C里面的数组拷贝
一个hash table的简单问题c里全局数组的再次赋值问题
C++一问for 循环下给不同变量赋值问题
C++ 里push_back 一问有尝请教关于spark api java coding (转载)
*(&b1)=b编译不过,b1=b可以,区别是?发现一个有趣的现象。
请教C里面动态数组的赋值关于java的二维数组的问题
包含指针的类和vector的问题question on reserve() in vector container.
相关话题的讨论汇总
话题: vector话题: c++话题: array话题: 问题话题: 出错
进入Programming版参与讨论
1 (共1页)
x****t
发帖数: 389
1
定义了一个数组,比如a[10],自然是只能用到 a[0] 到 a[9].
打开一个文件ABC,把里面的内容赋给数组 a
程序中出了个判断差错,居然给a[10]赋值。但是程序在这个地方并没有停止,也没有
输出sengmentation fault. 而是继续运算,运算结果还都是正确的。。。最后体现出的
问题是不能关闭文件ABC。。。 一到关闭文件的地方就出错。。。如果把关闭文件那一
行删掉,程序就报析构函数出错。。。
最后才明白原来是a数组溢出了。。。 现在知道结论了,当然就觉得问题很简单,但是
在分析问题的时候,由于程序又大,花了很长时间才找到这个问题
所以C++当遇到内存出错的问题之后,其实体现出来的,或者报出来的出错信息,都是
不准确的,甚至在这一行cout出来的值是正确的,也不代表上面的运算是正确的。。。
。。。一个地方的内存出了问题,天知道它会在哪里报出什么样的错误。。。。这一点
很头疼啊。。。。是不是都是靠经验啊?
p****o
发帖数: 1340
2
use std::vector instead of array.

【在 x****t 的大作中提到】
: 定义了一个数组,比如a[10],自然是只能用到 a[0] 到 a[9].
: 打开一个文件ABC,把里面的内容赋给数组 a
: 程序中出了个判断差错,居然给a[10]赋值。但是程序在这个地方并没有停止,也没有
: 输出sengmentation fault. 而是继续运算,运算结果还都是正确的。。。最后体现出的
: 问题是不能关闭文件ABC。。。 一到关闭文件的地方就出错。。。如果把关闭文件那一
: 行删掉,程序就报析构函数出错。。。
: 最后才明白原来是a数组溢出了。。。 现在知道结论了,当然就觉得问题很简单,但是
: 在分析问题的时候,由于程序又大,花了很长时间才找到这个问题
: 所以C++当遇到内存出错的问题之后,其实体现出来的,或者报出来的出错信息,都是
: 不准确的,甚至在这一行cout出来的值是正确的,也不代表上面的运算是正确的。。。

x****t
发帖数: 389
3
每次push_back吗?如果读大量数据,会不会变慢?
如果把一个vector先定好大小,速度是不是就和定好的数组读文件的速度一样了?
C++里为了避免内存出错,是不是应该尽量避免用new开辟数组?
谢谢!!

【在 p****o 的大作中提到】
: use std::vector instead of array.
k****f
发帖数: 3794
4
valgrind
boundchecker
软件查这些常见内存错误

【在 x****t 的大作中提到】
: 定义了一个数组,比如a[10],自然是只能用到 a[0] 到 a[9].
: 打开一个文件ABC,把里面的内容赋给数组 a
: 程序中出了个判断差错,居然给a[10]赋值。但是程序在这个地方并没有停止,也没有
: 输出sengmentation fault. 而是继续运算,运算结果还都是正确的。。。最后体现出的
: 问题是不能关闭文件ABC。。。 一到关闭文件的地方就出错。。。如果把关闭文件那一
: 行删掉,程序就报析构函数出错。。。
: 最后才明白原来是a数组溢出了。。。 现在知道结论了,当然就觉得问题很简单,但是
: 在分析问题的时候,由于程序又大,花了很长时间才找到这个问题
: 所以C++当遇到内存出错的问题之后,其实体现出来的,或者报出来的出错信息,都是
: 不准确的,甚至在这一行cout出来的值是正确的,也不代表上面的运算是正确的。。。

d*****a
发帖数: 110
5

How did you assign values to the array? Assigning to vector won't be slower
than to array.
You got it. You need the amount of mem anyway, why bother to new?

【在 x****t 的大作中提到】
: 每次push_back吗?如果读大量数据,会不会变慢?
: 如果把一个vector先定好大小,速度是不是就和定好的数组读文件的速度一样了?
: C++里为了避免内存出错,是不是应该尽量避免用new开辟数组?
: 谢谢!!

c*****z
发帖数: 182
6
your title is c++ but you are complaining about c

【在 x****t 的大作中提到】
: 定义了一个数组,比如a[10],自然是只能用到 a[0] 到 a[9].
: 打开一个文件ABC,把里面的内容赋给数组 a
: 程序中出了个判断差错,居然给a[10]赋值。但是程序在这个地方并没有停止,也没有
: 输出sengmentation fault. 而是继续运算,运算结果还都是正确的。。。最后体现出的
: 问题是不能关闭文件ABC。。。 一到关闭文件的地方就出错。。。如果把关闭文件那一
: 行删掉,程序就报析构函数出错。。。
: 最后才明白原来是a数组溢出了。。。 现在知道结论了,当然就觉得问题很简单,但是
: 在分析问题的时候,由于程序又大,花了很长时间才找到这个问题
: 所以C++当遇到内存出错的问题之后,其实体现出来的,或者报出来的出错信息,都是
: 不准确的,甚至在这一行cout出来的值是正确的,也不代表上面的运算是正确的。。。

j*****k
发帖数: 1198
7
vector会慢的,特别是在加入新值的时候

slower

【在 d*****a 的大作中提到】
:
: How did you assign values to the array? Assigning to vector won't be slower
: than to array.
: You got it. You need the amount of mem anyway, why bother to new?

y*******g
发帖数: 6599
8
可以在开始reserve一片吧

【在 j*****k 的大作中提到】
: vector会慢的,特别是在加入新值的时候
:
: slower

P********e
发帖数: 2610
9
我不知道具体string.h的算法是什么
不过,string是这样的
string s = "12345";
实际上s已经被reserve 了 10左右个byte的空间,虽然length只有6,他都有预先
reserve空间的

【在 y*******g 的大作中提到】
: 可以在开始reserve一片吧
d*****a
发帖数: 110
10
That's what I meant. If the size of the array is known, it should be used to
reserve in the vector. Then the speed to assign the array is about the same
as to the vector.

【在 y*******g 的大作中提到】
: 可以在开始reserve一片吧
z******i
发帖数: 59
11
vector memory is from heap. heap mallocation can be system call, the
user mode to kernel mode transition can be expensive.
1 (共1页)
进入Programming版参与讨论
相关主题
question on reserve() in vector container.C++ 里push_back 一问
[求教大虾]关于C++编译期变量和运行期变量的区别,总是有疑惑*(&b1)=b编译不过,b1=b可以,区别是?
copy constructor问题。请教C里面动态数组的赋值
C++编程原则的问题包含指针的类和vector的问题
请问C++如何初始化类时就传入一个数组参数[合集] C语言bit操作问题,急!
程序中的各个变量/数组的内存地址是否会混在一起?C里面的数组拷贝
一个hash table的简单问题c里全局数组的再次赋值问题
C++一问for 循环下给不同变量赋值问题
相关话题的讨论汇总
话题: vector话题: c++话题: array话题: 问题话题: 出错