字符转换和内存问题
void str_dess(char *source, char *dest, char *in_key, int flg )
char *source= "12345678 ";
char *dest;
char *key= "nb2031nb ";
int i=0;
str_dess(source,dest,key,i);
内存出错为什么???
还有为什么不能unsigned char *source= "12345678 ";
vc6会报错
[解决办法]
你那个dest指针没有初始化,再往那里写值的话,当然就会出错了
[解决办法]
unsigned char* source = "12345678 ";
-----
编译器会把 "12345678 "存储在静态存储区,并返回首地址char*
str_dess函数做什么操作?
[解决办法]
楼上的正解
[解决办法]
dest是个悬空指针,你往这个地址拷贝就会出错.
--------------------------------------------------
还有为什么不能unsigned char *source= "12345678 ";
这个是类型不匹配, "12345678 "默认为char*行,赋值给unsigned char*时就会类型不匹配.
编译时应该给出一个警告吧.
改成这样看看
unsigned char *source=(unsigend char*) "12345678 ";
[解决办法]
楼上正解~
[解决办法]
你可以将char * dest
改成char * dest[]
[解决办法]
你的dest指针并没有开辟内存空间,就往里面写入了数据,会写到非法的内存区,而报内存错误.
可以这样:
char *dest=new char[strlen(source)+1]; //分配内存空间
另外
unsigned char *source= "12345678 ";
当然是不行的,因为字符串的返回类型是char*,你这样赋值是类型不匹配