1 c debugging memory-management compiler-errors
伙计们,这里是一个实现memset(),但是我被告知代码中存在一个逻辑错误.你能帮我找到吗?
我觉得目标字符串的双指针应该传递给这个函数,这就像传递指针变量的地址而不是指针本身.
我在MS VC++ IDE中执行代码时遇到"访问冲突".
'C'库函数memset的定义是
void *memset(char *s, char c, size_t n)
Copy c to the first n characters of s. Return s.
void *memset(char *s, char c, size_t n)
{
size_t i;
for (i = 0; i < n; i++, s++)
{
*s = c;
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
这有几个问题.
void *memset(char *s, char c, size_t n)
{
size_t i;
for (i = 0; i < n; i++, s++) /* incrementing s means you cannot return */
{ /* the original value */
*s = c; /* consider using s[i] = c after not incr. s*/
}
return s; /* this should probably be a cast back to void */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |