当前位置: 技术问答>linux和unix
linux下关于char *p字符指针的问题
来源: 互联网 发布时间:2016-10-22
本文导语: 本帖最后由 morneve1 于 2010-11-29 10:26:35 编辑 众所周知,在windows下(如VC++)定义 char *pstr="select * from table where id=123;"; pstr一般为0x0042开头的地址,这个地址所指向的内容是不能被修改的. 但是在linux中确是可以修改的,...
char *pstr="select * from table where id=123;";
pstr一般为0x0042开头的地址,这个地址所指向的内容是不能被修改的.
但是在linux中确是可以修改的,有些同事直接这样写:
int id=123;
char *pstr="select * from table where id=%d;";
sprintf(pstr,id);
因为windows下的开发习惯对于这种情况我自己不会用指针来做,我会用字符数组,我会认为这是常量字符串,一般不需要修改的时候才这么写.
但不知道他这么写会不会有安全性的问题??
|
就是被加到不同的段里面了,windows的可能设置了只读属性了,所以一写就报错。
不过这个很糟糕的用法了,肯定说不要这样用好了,那是字符串 常量来的,常量不要修改的好,很容易引进bug
不过这个很糟糕的用法了,肯定说不要这样用好了,那是字符串 常量来的,常量不要修改的好,很容易引进bug
|
windows下确实是这样的,觉得这样安全性比较高~~~
|
你的同事的写法应该是不太规范的,这样可能在采用不同编译器的时候会出问题