求教memset的问题,在线等

congcongke007 2011-10-06 11:27:03
在vs中,我要在调用memset()函数的时候陷入一个异常处理程序该怎么办?找不到memset()的源码在哪,怎么去监控它是否被调用?不知道用中断行不行,但是不知道怎么设置中断。
求高手解答。坐等!
...全文
142 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
congcongke007 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ljljlj 的回复:]
不是memset的错,是你的程序其它部分有错。
[/Quote]
恩,不是memset的错。memset本身没有错。我的目的是在执行完memset后执行一些后续的处理。比如打印信息什么的。所有的memset操作后都有一个后续处理。
ljhhh0123 2011-10-06
  • 打赏
  • 举报
回复
不是memset的错,是你的程序其它部分有错。
congcongke007 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fyzqzpd 的回复:]
重载自己的memset。
[/Quote]
重载的话不是要求参数类型不能一样么?你这样重载后编译会通过么?
如果通过了,能保证所有的进程都调用的是你重载后的函数么?
如果能保证,重载后的函数放在系统的什么地方呢?
congcongke007 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chinazhangjie 的回复:]
memset

memset implement
[/Quote]
在vs中它的实现是这样的。
void * __cdecl memset(__out_bcount_full_opt(_Size) void * _Dst, __in int _Val, __in size_t _Size);
没有源码。
zhao1zhong6 2011-10-06
  • 打赏
  • 举报
回复
void memset(void* pdata, int n, int c)
{
//.........
::memset(pdata,n,c);
}
zhao1zhong6 2011-10-06
  • 打赏
  • 举报
回复
重载自己的memset。
congcongke007 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fyzqzpd 的回复:]
.asm
出现异常的时候都会显示文件名的,那个就是
[/Quote]
memset本身没有错,我想在调用它的时候转入一个处理程序,处理完后继续返回memset执行。或许不用异常就可以。但是具体怎么做,我完全没有思路!
独酌逸醉 2011-10-06
  • 打赏
  • 举报
回复
zhao1zhong6 2011-10-06
  • 打赏
  • 举报
回复
汇编文件
zhao1zhong6 2011-10-06
  • 打赏
  • 举报
回复
.asm
出现异常的时候都会显示文件名的,那个就是
congcongke007 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 mingliang1212 的回复:]
真拿你没办法,这样用宏定义吧。

C/C++ code



#define memset(Des,Val,num) fun(); std::memset(Des,Val,num);

//void theloop(int * arr,int total,unsigned int diff,int*des);
void fun(){
puts("dosomthing.\……
[/Quote]
谢谢啊。这个对我启发很大。
iamnobody 2011-10-06
  • 打赏
  • 举报
回复
真拿你没办法,这样用宏定义吧。


#define memset(Des,Val,num) fun(); std::memset(Des,Val,num);

//void theloop(int * arr,int total,unsigned int diff,int*des);
void fun(){
puts("dosomthing.\n");
};

int main(int argc,char* argv[]){
int arr[10] = {1,3,2,4,4,42,1,9};
memset(arr,0,10);
std::cout<<arr[0]<<"\n";
system("pause");
}


congcongke007 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mingliang1212 的回复:]
引用 10 楼 congcongke007 的回复:
引用 9 楼 ljljlj 的回复:
不是memset的错,是你的程序其它部分有错。

恩,不是memset的错。memset本身没有错。我的目的是在执行完memset后执行一些后续的处理。比如打印信息什么的。所有的memset操作后都有一个后续处理。


难道你想修改memset()?千万不要有这种想法。
你可以这样:
调用……
[/Quote]
可不可以有一个触发器,当执行到memset()的时候就自动转到别的任务,之后在转回来。
iamnobody 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 congcongke007 的回复:]
引用 9 楼 ljljlj 的回复:
不是memset的错,是你的程序其它部分有错。

恩,不是memset的错。memset本身没有错。我的目的是在执行完memset后执行一些后续的处理。比如打印信息什么的。所有的memset操作后都有一个后续处理。
[/Quote]

难道你想修改memset()?千万不要有这种想法。
你可以这样:
调用myMemset()代替直接调用memset();
myMemset(void * p , int val, int count)
{
dosomething();
memset(p,val,count);
};

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧