写代码时常见的错误

实验室有要做阶段练习题了,其中有一道改bug题:

#include <iostream>
#include <vector>

int main(int, char**)
{
	std::vector<int>** ppRandomData = distributeRandomInt(100);

	for (unsigned int i=0; i<1000; i++)
	{
		if (ppRandomData[i])
		{
			std::cout << "Elements in [" << i << "] : ";
			for (unsigned int k=0; k<ppRandomData[i]->size(); k++)
			{
				std::cout << ppRandomData[i]->at(k) << " ";
			}
			std::cout << std::endl;
		}
	}

	delete[] ppRandomData;
	return 0;
}

std::vector<int>** distributeRandomInt(int vMod)
{
	assert(vMod > 0);
	std::vector<int> **ppContainer;

	ppContainer = new std::vector<int>*[vMod];

	srand(0);

	for (int i=0; i<1000; i++)
	{
		int RandomNum = rand();

		std::vector<int> *pContainer = ppContainer[RandomNum%vMod];

		if (pContainer = NULL)
		{
			pContainer = new std::vector<int>;
		}
		pContainer->push_back(RandomNum);
	}
	return ppContainer;
}

这个题考了几个考点:

1 首先申请数组指针时一定要记得初始化数组中每一个成员

2指针域指针之间的赋值与引用

3= 与==的区别

4内存泄露 :释放指针 与释放指针的指针

5 这个migic number

修改如下:

#include <assert.h>     //add
#include <iostream>
#include <vector>

std::vector<int>** distributeRandomInt(int vMod);

const int Total = 100;

int main(int, char**)
{
	std::vector<int>** ppRandomData = distributeRandomInt(100);

	//for (unsigned int i=0; i<1000; i++)
	for (unsigned int i=0; i<100; i++)//100 migic number
	{
		if (ppRandomData[i])
		{
			std::cout << "Elements in [" << i << "] : ";
			for (unsigned int k=0; k<ppRandomData[i]->size(); k++)
			{
				std::cout << ppRandomData[i]->at(k) << " ";
			}
			std::cout << std::endl;
		}
	}

	for (int i=0; i<100; ++i)
	{
		if (ppRandomData[i] != NULL) delete ppRandomData[i];//释放数组中每一块申请的内存
	}

	delete[] ppRandomData;
	return 0;
}

std::vector<int>** distributeRandomInt(int vMod)
{
	assert(vMod > 0);
	std::vector<int> **ppContainer;

	ppContainer = new std::vector<int>*[vMod];

	for (int i=0; i<vMod; ++i)//初始化数组指针
	{
		ppContainer[i] = NULL;
	}

	srand(0);

	for (int i=0; i<1000; i++)
	{
		int RandomNum = rand();

		//std::vector<int> *pContainer = ppContainer[RandomNum%vMod];
		std::vector<int>*& pContainer = ppContainer[RandomNum%vMod];//指针的引用,要改变指针的值
		//if (pContainer = NULL)
		if (pContainer == NULL)// = 与==的区别
		{
			//pContainer = new std::vector<int>;
			pContainer = new std::vector<int>;
		}
		pContainer->push_back(RandomNum);
	}

	return ppContainer;
}

写代码时常见的错误

时间: 2024-12-22 22:53:21

写代码时常见的错误的相关文章

PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下。以便用到的出现错误

推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 1 <?php 2 $abc = 'abcd'; 3 echo $abc; //输出 'abcd' 4 echo $aBc; //无输出 5 echo $ABC; //无输出 2. 常量名默认区分大小写,通常都写为大写 (但没找到能改变这个默认的配置项,求解) 1 <?php 2 define("ABC","Hello World"); 3 echo ABC; //输出 Hel

今天和组内一起写代码时碰到了一个关于命名冲突的问题,最后用js命名空间的方法解决的。

//第一步,首先创建一个全局变量,可以放在自己的js方法库中方便以后用,这个就是用来注册命名空间的方法. ns = function(namespace){ var arr = namespace.split('.');  //将传入的字符串如"com.test.lzn"以'.'隔开做成一个数组 var strNamespace = ""; //这个是为了保存每一步循环进去的包名 for(var i=0;i<arr.length;i++) { if(i!=0)

html基础,写代码时的总结等---ShinePans

index.html: <html> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> <head> <body> <center> <!--空格  --> <!--img src="与html文件位置相同或者本地url或者网络url" width="xxpx为边框宽度&qu

在用php写代码时遇到Cannot send session cookie - headers already sent by (output started at E:\web\Apache2\htdocs\index.php:1) in E:\web\Apache2\htdocs\functi

Warning Cannot send session cookie - headers already sent...问题的解决(PHP的UTF-8 BOM引起的问题) 习惯了用edit plus进行php编程,所以有时会出现一些不为人知的错误,很麻烦;.近日,在开发项目时,某些页面总是出现以下问题: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already s

新手学习Python时常见的错误

在运行或编写一个程序时常会遇到错误异常,这时Python会给你一个错误提示类名,告诉出现了什么样的问题(python是面向对象语言,所以程序抛出的异常也是类).能很好的理解这些错误提示类名所代表的意思,可以帮助你在最快的时间内找到问题所在,从而解决程序上的问题是非常有帮助的. 搜集了一些python最重要的内建异常类名,并做了简单的介绍: AttributeError:属性错误,特性引用和赋值失败时会引发属性错误 NameError:试图访问的变量名不存在 SyntaxError:语法错误,代码

Junit测试代码时出现initializationError 错误

首先代码没有错误,执行Junit测试时出现以上错误.上网查资料发现少了包 从网上下载了一个jar包解决了hamcrest-core-1.3.jar 现在下载包搜索的好多坑,有的网站必须注册才能下载,而且下载的有的还是 很垃圾.所以给大家推荐一个下载网站:http://www.java2s.com  平时找包就so easy了

vs的一些操作技巧:在写代码时自动换行的设置

有时在写代码的时候,一行代码太长了,想换行,直接按回车键的话又会报错,怎么办?其实可以这样设置vs,就可以达到自动换行的效果啦. ? 原文地址:https://www.cnblogs.com/Teacher-Lu/p/11673048.html

SSM做增删改查时常见的错误

项目一错误总结 常见的服务器启动404报错,可能出现的原因: 1)启动项目的路径写的不对. 2)由于我在GitHub中拉下来的文件,导入eclipse中时,parent项目导入的信息与其他的项目导入到内容不符合,导致每次改动后不会生效.也不会扫描到web层 经过重新导入以后就可以了. 3)使用postman发送GET或者POST请求时,出现404的报错是由于不是通过json数据请求的. 做修改方法时,每次按照id,name修改后,会更新全部的数据? 说明id值没有生效,查看mapper.xml时

程序员写代码时应该反复问自己的 10 个问题

你想成为一名优秀的程序员吗? 那么,现在是时候放下<24小时学会xxx语言v8.3>超级骗子书,相反,你应当养成每天反问自己以下10个问题的习惯. 你的代码中是否有一种模式存在? 找寻模式中的可行与不可行将发现其中看似无关的想法或基本原则.要对工作达到深入的理解,你必须养成反问自己“是否有一种模式存在?”的习惯. 它不仅仅适用于你的代码.是否有适应各类型商业变化的模式吗?是否有一种适用于技术发展的模式?你有没有看到同类型的错误如雨后春笋般冒出来? 引用 所谓理解就是要理解模式 — 以赛亚·伯林