标题:求助关于int类型的**P内存分配与释放(已解决~谢谢)
只看楼主
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
 问题点数:0 回复次数:5 
求助关于int类型的**P内存分配与释放(已解决~谢谢)

#include <iostream.h>

int main(){
const sizeX = 4;
const sizeY = 3;
int **p;

//为**p分配4*3的内存;
p = new int[sizeX];
for(int i = 0 ;i < sizeX; i++){
p[i] = new int[sizeY];
}

//赋值
for(int x = 0; x < sizeX ; x++)
for(int y = 0;y < sizeY ; y++)
*((p+x*sizeX) + y) = x*y;
//打印
for( int z = 0; z < sizeX ; z++)
for(int a = 0;a < sizeY ; a++)
cout << *((p+z*sizeX) + a) << endl;
//释放内存
for(int b = 0 ; b < sizeX ; b++)
delete [] p[b];
delete [] p;

return 0;
}

不知道那里错误了~~请大侠们帮我改改~~能把数组的改成指针类型最好不过了~~

[此贴子已经被作者于2007-10-24 10:48:16编辑过]

搜索更多相关主题的帖子: 内存 int 类型 释放 
2007-10-23 22:19
style
Rank: 2
等 级:论坛游民
帖 子:18
专家分:20
注 册:2005-11-29
得分:0 

#include <iostream.h>

int main()
{
const sizeX = 4;
const sizeY = 3;
int **p;

//为**p分配4*3的内存;
p = new int*[sizeX];

for(int i = 0 ;i < sizeX; i++)
{
p[i] = new int[sizeY];
}

//赋值
for(int x = 0; x < sizeX ; x++)
for(int y = 0;y < sizeY ; y++)
*(*(p+x*sizeX) + y) = x*y;
//打印
for( int z = 0; z < sizeX ; z++)
for(int a = 0;a < sizeY ; a++)
cout << *(*(p+z*sizeX) + a) << endl;
//释放内存
for(int b = 0 ; b < sizeX ; b++)
delete [] p[b];
delete [] p;

return 0;
}


11111111
2007-10-23 22:52
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
得分:0 
回复:(style)#include int ma...
好像还是有错误,在赋值的时候x=2的时候说内存已经有数据了~~~
2007-10-23 23:08
style
Rank: 2
等 级:论坛游民
帖 子:18
专家分:20
注 册:2005-11-29
得分:0 

#include <iostream.h>

int main()
{
const sizeX = 4;
const sizeY = 3;
int **p;

//为**p分配4*3的内存;
p = new int*[sizeX];

for(int i = 0 ;i < sizeX; i++)
{
p[i] = new int[sizeY];
}

//赋值
for(int x = 0; x < sizeX ; x++)
for(int y = 0;y < sizeY ; y++)
*(*(p+x) + y) = x*y;
//打印
for( int z = 0; z < sizeX ; z++)
for(int a = 0;a < sizeY ; a++)
cout << *(*(p+z) + a) << endl;
//释放内存
for(int b = 0 ; b < sizeX ; b++)
delete [] p[b];
delete [] p;

return 0;
}


11111111
2007-10-23 23:16
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
得分:0 
谢谢~~~~不过还不懂为什么用*(*(p+x) + y)而不用*(*(p+x*sizeX) + y)
2007-10-23 23:21
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
*(*(p+x*sizeX) + y)这会出现数组越界错误.

=×&D o I p R e E n C g T l X&×=
2007-10-23 23:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-180228-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.191963 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved