html5 监控页面设计:指针问题,关于指针数组的问题。

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 03:12:49
关于C语言里的C指针问题:

char *string ="string";
为什么指针可以直向无地址的常量?这样做不会导致内存泄露什么问题?
上面那个到底怎么该理解?
这是C喔,不是C++啊。

先把字符串string存放到内存中,然后将存放字符串的起始地址送到指针变量中。
char str[]="string";相当于char* string=str;或char* string=&str[0];
指针类型变量与其他数据类型变量一样,变量出了作用域后无效,并且所占空间自动释放。
而char str[]变量出了作用域也会自动释放空间。不会泄漏内存。

new的空间要自己释放,否则泄漏内存。
例float* p;p=new float[n];是分配一个有n个元素的实型数组,并使p指向该数组,
delete p;时释放的空间是数组占用的空间,而非指针的空间。

你的理解有问题,常理并不是没有地址,任何在内存中的数据都是有地址的,只是地址不同而已,常量是保存在栈中的.
栈中的数据程序会自动释放,不会造成内存泄露
内存泄露是指在堆上分配的内存(就是自己用new分配的)在退出的时候没有使用delete释放掉,那样才会造成内存泄露,所以只要你用new分配了内存,那么一定要用delete来释放分配的内存

这个在赋初值的时候是可以的,“string”是个字符串常量,对于字符串来说它是有一片内存区域的