试图读取或写入受保护的内存:C++修改的内存值
Attempted to read or write protected memory : C++ Modified Value of Memory
I对于修剪字符串"c和c++中的char数组或char指针"使用此函数:
inline char * trimRight(char * str)
{
char * end = str + strlen(str);
while(str != end)
{
end--;
switch(*end)
{
case ' ':
case 't':
case 'n':
case 'v':
case 'f':
case 'r':
break;
default:
*(end+1) = ' ';
return end+1;
}
}
return str;
}
但返回此错误(代码*(end+1)='\0'中的原因):
"System.AccessViolationException"类型的未处理异常发生在x.exe 中
附加信息:试图读取或写入受保护的内存。这通常表示其他内存已损坏。
请帮帮我。
毫无疑问,您试图在受写保护的字符串文本上调用此函数。确保你不使用任何字符串文字,你会没事的。
错误:
char *s = "hello ";
trimRight(s);
好:
char s[] = "hello ";
trimRight(s);
顺便说一句,如果字符串都是空格,那么函数不会修剪任何内容。我不确定你是否希望这样,但在这种情况下,它似乎应该设置*str = ' ';
。
相关文章:
- 内存排序或读取-修改-写入操作,仅(读/写)内存顺序
- C# 或 C++ ;可以像在CE中一样修改内存吗?
- 使用 void 指针:void **ptr.. 如何修改共享内存的值?
- 如何修改只读内存中的字符
- 是否可以在内存中修改功能
- 仅在 CUDA 上修改设备内存一次
- 使用calloc分配内存时出错(释放堆块XXX后在YYY修改)
- 试图读取或写入受保护的内存:C++修改的内存值
- 在递归循环中条件修改的引用内存
- 内存黑客/修改C++
- 在链表中修改的数据不会反映在内存中
- 当调用函数时,修改指针如何释放内存
- 在内存中修改自身的C++对象
- 其他线程是否可以修改线程本地内存
- 为什么在C++允许从外部修改常量对象的指针成员变量的内存?
- c++中动态分配和修改函数的内存
- 修改编译后的可执行内存分配
- 从复制构造函数外部修改对象成员时导致向量内存损坏,但从复制构造函数内部修改时不会
- visualstudio 2012-如何在c++中修改对象已知内存地址
- 如何修改std::shared_ptr(unique_ptr)保护的内存