使用_tcsset时运行时崩溃

1.我编写了以下代码,该代码可编译但在运行时崩溃,显示在调用_tcsset时显示“访问冲突写入”

void function(TCHAR *tsatz)
{
    printf( "Before: %s\n", tsatz );
    _tcsset(tsatz,'*');
    printf( "After: %s\n", tsatz );
}

void main( void )
{
    TCHAR* tsatz;
    tsatz = new char[256];
    tsatz = "This is a test string ";
    function(tsatz);
    getchar();
}

使用_tcsset时我在哪里错了?

2.如果我们告诉目标缓冲区有多大,我知道所有“安全”功能都可以使用。但是,如果我需要在tsatz来自外部的“函数”中使用_tcsset_s,有办法吗?

我是初学者。我能得到的任何帮助将不胜感激。提前致谢。

用户名

您正在修改字符串文字,这是未定义的行为。

tsatz = "This is a test string ";

这不会将字符串文字复制到字符串中tsatz,只是指定tsatz指向的地址"This is a test string ";无法修改解决此问题的一种方法是声明tsatz为数组,并使用字符串文字对其进行初始化,这将自动为您将文本复制到数组中

TCHAR tsatz[] = "This is a test string ";

如果需要跟踪数组的大小,则需要明确地这样做(请注意,sizeof只有在操作数实际上是数组而不是指针的情况下,数组才起作用):

void function(TCHAR *tsatz, size_t numberOfElements)
{
    _tprintf( "Before: %s\n", tsatz );
    _tcsset_s(tsatz, numberOfElements, '*');
    _tprintf( "After: %s\n", tsatz );
}

void main( void )
{
    TCHAR tsatz[] = "This is a test string ";
    function(tsatz, sizeof tsatz / sizeof(TCHAR));
    getchar();
}

或使用模板

template<size_t sz>
void function(TCHAR (tsatz&)[sz])
{
    _tprintf( "Before: %s\n", tsatz );
    _tcsset_s(tsatz, sizeof tsatz / sizeof(TCHAR), '*');
    _tprintf( "After: %s\n", tsatz );
}

或者您也可以使用std::basic_string

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用即时运行时的VerifyError

来自分类Dev

创建图表时运行时错误1004程序崩溃

来自分类Dev

运行时崩溃

来自分类Dev

使用vba搜索功能时运行时错误1004

来自分类Dev

DirectX 11:运行简单的DirectX应用程序时运行时崩溃

来自分类Dev

Android:添加SDK_INT代码时运行时崩溃

来自分类Dev

Xcode 运行时崩溃

来自分类Dev

台风+ Swift:使用运行时参数时发生崩溃

来自分类Dev

递归函数在运行时崩溃

来自分类Dev

Objective-C 运行时崩溃

来自分类Dev

多次运行时摘要操作崩溃

来自分类Dev

如何在首次运行时运行Vagrant设置?

来自分类Dev

设置AlarmManager在Android应用未运行时运行?

来自分类Dev

网站首次运行时运行速度较慢?

来自分类Dev

在INSERT运行时运行UPDATE查询

来自分类Dev

如何在运行时运行php扩展

来自分类Dev

在应用程序运行时运行任务

来自分类Dev

网站首次运行时运行速度较慢?

来自分类Dev

在运行时运行Java文件

来自分类Dev

C ++中的运行时运算符

来自分类Dev

不要同时运行时间

来自分类Dev

实时运行时禁用Google Analytics(分析)跟踪

来自分类Dev

Postgres select查询在使用JDBC时运行缓慢,但在同一服务器上的PSQL中运行时运行很快

来自分类Dev

使用measureTimeMillis运行时

来自分类Dev

与CryptoStream一起使用时,嵌套的“使用中”会使.net运行时崩溃

来自分类Dev

MKL示例代码可以使用cmake正常编译,但是在运行时崩溃

来自分类Dev

使用unique_ptr实现回调时VC++报告在运行时崩溃

来自分类Dev

为什么在C ++中使用多线程时运行时没有减少一半?

来自分类Dev

在Android <4.4上运行时,Mockito + Dexmaker测试崩溃

Related 相关文章

热门标签

归档