由买买提看人间百态

topics

全部话题 - 话题: cptr
(共0页)
s*******1
发帖数: 20
1
来自主题: Programming版 - C++ delete
What happens after delete? It seems that the object still exists after
delete in the program below.
Thanks.
#include
using namespace std;
class C{
public:
void f(){cout << "exist!" << endl;}
int x;
};
int main()
{
C* Cptr = new C;
Cptr->x=1;
delete Cptr;
Cptr->f();
cout << Cptr->x << endl;
return 0;
}
//output
exist!
1
U********d
发帖数: 577
2
来自主题: Programming版 - C++ delete
你没有得到他。
你设置了cptr=null,那么你通过cptr调用所有的成员函数和成员变量必然会导致0内存
访问错误。如果你说的some cases是之前有其他的指针比如xxoo=cptr,我觉得可以不
用拿出来说,因为使用xxoo和让cptr=null没有半点关系了。
l***y
发帖数: 37
3
来自主题: JobHunting版 - question about char pointer
大牛请问
why can't print out c 在内存中的地址
---------------------------------
char c='3';
char *cptr=&c;
char **cptrptr=&cptr;
cout <<"Address of Var i=" <
F********E
发帖数: 1025
4
Hi,
I have the following fortran90 code:
**********************************************
TYPE :: CPLK
REAL(8), DIMENSION(:), POINTER :: CP
TYPE(CPLK),POINTER :: NEXT
END TYPE CPLK
...
allocate CPLK linked list
let CPTR point to the last link
...
IF ( ASSOCIATED (CPTR) ) THEN
WRITE(OUTU,*)' deallocate this layer'
DEALLOCATE(CPTR)
ENDIF
***********************************************
Execuation o
J*******g
发帖数: 381
5
来自主题: Programming版 - 请教一个const pointer的问题
Sorry,写错了。 应该是这样。
const double pi = 3.14;
const double *cptr = π
*cptr =3.14159;
最后一句出错了。
z****e
发帖数: 2024
6
来自主题: Programming版 - C++ delete
delete Cptr;
Cptr=0;
to dereference a deleted pointer is undefined. (dangerous)
to dereference a null pointer is a run time error.(safer, but bad, usually segmentation fault)
"delete" calls destructor and modify the linked list which holds address of accessible memory blocks.
N***m
发帖数: 4460
7
来自主题: Programming版 - C++ delete
try set cptr=null in your code to see if you can still
use cptr->f()?
in my case, i can still access it.
N**********d
发帖数: 9292
8
例如
char* cptr="aaaaaa";
char c[]="bbbbbb";
怎么知道他们保存在什么地方?
p****s
发帖数: 32405
9
你想把cptr和c的地址打印出来?
c*****t
发帖数: 1879
10

cptr points to a data/text memory location. Trying to modify this
content can result in segmentation fault on Unix. On PC, it might
be allowed to modify it though.
c points to a region on stack. You can modify it without hesitation.
J*******g
发帖数: 381
11
来自主题: Programming版 - 请教一个const pointer的问题
const double *cptr =3.14159;
这句话为什么有问题? 等号右边的不是一个const literal吗?
b******a
发帖数: 215
12
来自主题: Programming版 - 请教一个const pointer的问题
cptr是个pointer啊,不是3.14159。
S**I
发帖数: 15689
13
来自主题: Programming版 - 请教一个const pointer的问题
const double *cptr = new double(3.14);
I*****y
发帖数: 602
14
来自主题: Programming版 - 请教一个const pointer的问题
>const double *cptr = π
定义的是一个指向常量的指针。
但是你最后一句想改变这个应该为常量的值,当然要出错了。
进一步看看:下面const修饰指针和const修饰常量的区别。
const double *ptrPI = 3.14;
double const *ptrPIConst = π
double * constprtPIConst = π
U********d
发帖数: 577
15
来自主题: Programming版 - C++ delete
Delete一般是操作系统实现的,通常情况下你delete掉一个对象,操作系统只是将这个
对象所在的内存块标记为空闲,比如windows2000通常情况是把这个堆链回到freelist
或者其他几个堆管理的队列里面去。
把这块内存清0的工作是很费时间的,操作系统一般不主动作这件事情,所以删除掉后
无论内容还是对象的指针都没有任何变化。至于栈上的数值,除非你显示地指定Cptr=
null,否则在它整个生命周期里面也没有任何人会管他,这两个条件导致你短时间内无
论取成员变量还是调用成员函数都没有任何区别。
有可能变化的情况是你再次new了一个,操作系统有可能把同一块地址再分配给你然后
你又做了其他的事情。还有一种可能就是等足够长的时间System Idle Process把这块
地址清0了。
把操作系统看作政府的话,可以简单的认为delete只是贴了一个拆迁的标签,表示这栋
房子以后可以随便拆了。贴标签后你再去访问里面的人,可能钉子户还在,因为没有人
赶他走,但是你不能保证每次去都能看到,因为指不定哪天操作系统就给你拆迁了。
N***m
发帖数: 4460
16
来自主题: Programming版 - C++ delete
if you set cptr=null, you may still use it in some cases.

freelist
U********d
发帖数: 577
17
来自主题: Programming版 - C++ delete
你是对的,这里我写错了。设置cptr=null后调用f()中没有查什么虚函数表之类,函数
内部也没有成员变量调用,这个情况确实可以访问。
多谢指出。:)
U***y
发帖数: 149
18
来自主题: Programming版 - C++ delete
I am a newbie....
I run your code. but
the final output is
exist!
0
not the same as yours:
exist!
1
I changed Cptr->x=1000 or any other number
it always outputs like
exist!
0
Can anyone help explain?
Thansk...
t********o
发帖数: 48
19
来自主题: Unix版 - [转载] about header file
【 以下文字转载自 Programming 讨论区 】
【 原文由 tsingditto 所发表 】
这个header有问题么?
为什么每次include的时候,都说我:
'struct CSCMatrix' declared inside parameter list,
its scope is only this definition or declaration, which is probably not what
you want
#ifndef CAPLOT_H
#define CAPLOT_H
typedef struct
{
int nrow;
int ncol;
int nnz;
int *colptr;
int *rowind;
double *nzval;
double *dx;
double *dy;
} CSCMatrix;
extern double bmsize(int *rind, int *cptr,int m,int n);
extern void scale(struct CSCMatrix *csc);
extern void SAnetSVD(
s********1
发帖数: 211
20
黄花菜凉了,豆腐店也要打烊了,唯剩“一畦春韭绿,十里稻花香”。:)
no transgenic rice yet? http://www.i-sis.org.uk/CPTR.php
闹了半天,豆包还真就成不了干粮。 95%?不要吓唬偶。谢谢分享。
每日必读,良师益友。
(共0页)