c++编写中遇见的错误
目录
- 一.获取动态数组的长度
- 二.编译错误
- 三、内存泄露
一.获取动态数组的长度
首先想到获取数组的长度的代码是:
sizeof(arr) / sizeof(arr[0]);
但是当将其使用到动态数组上时就会产生错误;
int* help = new int[3];for (int i = 0; i < 3; i++)
{help[i] = i;
}std::cout << " " << sizeof(help) / sizeof(help[0]);
其运行出的结果为 1 ,且一直为 1;
解决方法
(1)另外保存动态数组的长度
(2)使用一个std::vector来管理动态数组:
// 创建一个int类型的动态数组
std::vector<int> dynamicArray;// 添加元素到数组
dynamicArray.push_back(10);
dynamicArray.push_back(20);
dynamicArray.push_back(30);// 获取数组长度
std::size_t length = dynamicArray.size();// 输出数组长度
std::cout << "动态数组长度: " << length << std::endl;
二.编译错误
1.传参类型错误(指针参数)
如下图错误是函数定义时参数为指针参数,而传入的参数为变量
解决方法
(1)将对应的的参数变为地址参数即可
三、内存泄露
在方法数据传输中,会发现只是传输的数据会增加一些其他数据
如下:
void add(int * data){//其中data数据中可能会出现其他的数据//data : ODDjH hello
}main(){int pData[512] = {0};memcpy(pData,"hello",6);add(pData);
}
解决方法
将定义的内存较大的变量定义为静态或者直接将其定义在方法外面